哥德巴赫猜想
- 100以内的正偶数都能分解为两个素数的和。
- 素数:又称质数,为在大于1的自然数中,除了1和它本身以外不再有其他的因数的数。
- 1既不是素数又不是合数。
1 #include<stdio.h> 2 3 //哥尔巴赫猜想 4 5 int prime(int n)//判断是否为素数 6 { 7 int i; 8 if(1==n) 9 { 10 return 0;//不是素数。 11 } 12 else if(2==n) 13 return 1;//是素数 14 else 15 { 16 for(i=2;i<n;i++) 17 { 18 if(n%i==0) 19 { 20 return 0;//不是素数 21 } 22 else if(n!=i+1)//这句的关键,为什么? 23 continue; 24 else 25 return 1;//是素数 26 } 27 } 28 } 29 int main() 30 { 31 int a,b; 32 int num=0; 33 int iTemp; 34 int sum; 35 for(sum=2;sum<=100;sum=sum+2) 36 { 37 for(b=1;b<=sum/2;b++)//其中b<sum/2能够限制数字不重复,避免7+3与3+7同时出现。 38 { 39 a=sum-b; 40 iTemp=prime(a); 41 if(iTemp==1 && prime(b)==1) 42 { 43 printf("%d+%d=%d ",a,b,sum); 44 num++; 45 if(num%5==0) 46 { 47 printf(" "); 48 } 49 } 50 } 51 } 52 53 54 55 }
else if(n!=i+1) continue;
意思是i的值不等于n-1的时候,结束本次循环,进入下一次循环取一个新的i值,判断该值是否为n的因子。
如果在2~n-1之间没有找到n的约数,则n为质数,返回0,否则返回1.
那为什么不加这句,49也会出来。。。
把你完整的程序代码贴出来看看
如果没有:else if(n!=i+1) continue;
按照你的思路,这里根本没办法判断一个数是否为质数
因为:即使一个数,不是质数,也不是说2~n-1之间的每个数,都能被它整除,此时,就返回0了。