原题链接:http://www.wechall.net/challenge/training/prime_factory/index.php
题目信息大概是:找到最开始的两个超过1百万的素数,而且它任意和为素数,你的solution是将两位素数拼起来提交
这里我们写一个程序来跑。。。
起先我想到的是任意两个加起来是素数
跑出来就
上传上去就错的,后来看了许多wp,发现他们都写的很粗略
我仔细想了想,发现事情并没有那么简单
实际上他说的意思是所有数字单独加起来的sum是素数,比如1000211加起来是5就是素数
写了个c的程序,一跑就出来了
#include <stdio.h> int isPrime(int i) { int ret =1; int k; for (k=2;k<i-1;k++){ if (i%k==0){ ret =0; break; } } return ret; } int main(){ int w,m,sum,k,i=0,a=1000000,b[12]; while(i<2){ loop: a++; if(isPrime(a)){ m=a; sum=0; if(a>1000000&&a<10000000) w=8; if(a>10000000&&a<100000000) w=9; if(a>100000000&&a<1000000000) w=10; if(a>1000000000&&a<10000000000) w=11; for(k=0;k<w-1;k++){ b[k]=m%10; m=m/10; } for(k=0;k<w-1;k++){ sum=sum+b[k]; } if(!isPrime(sum)) goto loop; printf("%d ",a); i++; } } }
Solution:10000331000037