判斷一個數是否爲質數並驗證哥德巴赫猜想

程序接受int可表示的正整數,並判斷其是否爲質數

算法說明

有兩種算法可供選擇

一是利用for循環,用一個小於待判斷數的數去對待判斷數求餘,若該數在自加過程中出現了餘數爲0的情況,則待判斷數不是質數,需注意的是應從2開始循環語句

二是利用do while語句,情況和上面相同

程序代碼

#include<stdio.h>
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<stdio.h>
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<stdio.h> 
#include<math.h> 
#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;
   }
  }
 }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章