不知道思路了。。居然是大一上学期的时候做的题,今天找回来才发现是区域赛的题。为什么那时候就写这么恶心的代码?_(:з」∠)_ 好像很厉害的样子。。
写一下那时候我的记录下来的思路,不知道对不对的了。。囧:
1.筛素数70个左右
2.求素数的乘积,要用到高精度乘法
3.把70个积都存下来
4.读入字符串,然后比较大数,超过已存素数就输出
大概就这样子。
代码如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 #include<math.h> 5 6 int prime[101]; 7 char *product[101]; 8 9 void produce_primes(void) 10 { 11 int i, j; 12 prime[1]=2; 13 prime[0]=1; 14 i=3; 15 while(prime[0] < 70) 16 { 17 for(j=1; j <= prime[0]; j++) 18 if(!( i%prime[j] ))break; 19 if( j > prime[0] ) 20 { 21 prime[0]++; 22 prime[prime[0]]=i; 23 } 24 i++; 25 } 26 } 27 28 char *multiply( char *a, char *b ) 29 { 30 int i, j, k; 31 int len_a=strlen(a); 32 int len_b=strlen(b); 33 int *i_product=(int *)malloc((len_a+len_b)*sizeof(int)); 34 char *c_product=(char *)malloc((len_a+len_b+1)*sizeof(char)); 35 36 memset(i_product, 0, (len_a+len_b)*sizeof(int)); 37 memset(c_product, 0, (len_a+len_b)*sizeof(char)); 38 c_product[len_a+len_b]='