哥德巴赫猜想

哥德巴赫猜想

  • 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了。
原文地址:https://www.cnblogs.com/xiaochige/p/6010627.html