判断一个数是否为质数并验证哥德巴赫猜想

程序接受int可表示的正整数,并判断其是否为质数

算法说明

有两种算法可供选择

一是利用for循环,用一个小于待判断数的数去对待判断数求余,若该数在自加过程中出现了余数为0的情况,则待判断数不是质数,需注意的是应从2开始循环语句

二是利用do while语句,情况和上面相同

程序代码

#include
int main()
{
int m, i, k;
printf(“Please input a integer:”);
scanf_s("%d", &m);
if(m==1)
printf("%d is a prime,\n", m);
for (i = 2; i <= m; i++)
{
k = m % i;
if (k == 0)
break;
}
if (i < m)
printf("%d is not a prime.\n", m);
else
printf("%d is a prime,\n", m);
return 0;
}

程序代码2.0

#include
int main()
{
int m, i=2, k;
printf(“Please input a integer:”);
scanf_s("%d", &m);
if(m==1)
printf("%d is a prime,\n", m);
do
{
k = m % i;
i++;
} while (k == 0);
if (i < m)
printf("%d is not a prime.\n", m);
else
printf("%d is a prime,\n", m);
return 0;
}

说明:2.0与1.0不同之处在于循环方式,其思想是一致的,另外需要注意的是如果使用do while 循环需要先对i赋值

利用该方法通过调用函数验证哥德巴赫猜想

程序代码

#include 
#include 
#define F 0 
#define T 1 
int judge(int a) 
{  
int m, i; 
 for (i = 2; i <= a; i++)  
 {   m = a % i;  
  if (m == 0)   
   break;  }  
   if (i < a) 
     return F;  
     else 
       return T; } 
       int main()
        {  int i, a, count = 0; 
 for (i = 4; i <= 2000; i += 2) 
  {   for (a = 2; a <= i; a++)  
   {    if (judge(a) && judge(i - a))
   {
    printf("%4d=%4d+%4d", i, a, i - a);
    count++;
    if (count % 4 == 0)
     printf("\n");
    else
     printf(" ");
    break;
   }
  }
 }
}

你可能感兴趣的:(c语言)