學C到現在,求質數可以有不同的判斷方法,但原理其實相同,都是利用質數的特性:只有本身跟 1 可以除盡。就我所知的寫法為下:
1.將本身從 1 開始除,直到除以本身,當餘數等於 0 時,計數器加 1,如果計數器為 2 則該數為質數,並將它印出。
int n;
int i,j=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
if(n%i==0)
j++;
}
if(j==2)
printf("質數\n");
else
printf("非質數\n");
2.將本身從 2 開始除,直到除以本身前一位,當餘數等於 0時,計數器加 1 ,如果計數器為 0 ,則該數為質數,並將它印出。
int n;
int i,j=0;
scanf("%d",&n);
for(i=2;i<n;i++)
{
if(n%i==0)
j++;
}
if(j==0)
printf("質數\n");
else if(n==2)
printf("質數\n")
else
printf("非質數\n");
其實換個角度也有其他寫法。
以下是我上學期期末考沒寫出來的題目,輸入一個範圍求所有質數:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n; //設變數 n (輸入的數字存放的位置)
int i,j,k=0; //設變數 i , j ; k 的初始值為0 ( i 為被除數 , j 為除數 , k 用來計算次數)
scanf("%d", &n); //將輸入的數字存入 n
for(i=2;i<=n;i++) //從 2 開始算起,到輸入的 n 結束
{
for(j=1;j<=i;j++) //從 1 開始除起,到自己本身結束
{
if(i%j==0) //當本身除以除數,剛好可以整除時
k=k+1; // k 的值加 1
}
if(k==2) //當 k 等於 2 時
printf("%d\t",i); //印出本身 \t 為空一格
k=0; //將 k 值回歸 0 重新計算
}
printf("\n");
system("pause");
return 0;
}