程序接受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;
}
}
}
}