因為質數有一個特性:只能被 1 和自己本身整除。
因此可以利用此依特性來寫程式...
假設只能被 1 和自己整除的話,代表著只能被整除 2 次
程式碼如下:
語法:
// 質數計算
#include <stdio.h> //載入函式庫 stdio
#include <stdlib.h> //載入函式庫 stdlib
#define clrscr() system("CLS") //畫面清除巨集
#define pause() puts("\n") & system("PAUSE") //畫面暫停巨集
#define Max 60 //定義最大值常數 = 60
int main()
{
int i,j,mod_counter; //for_loop 變數 i,j;整除統計 mod_counter
clrscr(); //畫面清除
for ( i=1; i<=Max; i++ ) { //座取餘數除法的Loop1,i 為被除數
mod_counter = 0; //整除統計歸零
for ( j=1; j<=i; j++ ) //座取餘數除法的Loop2,j 為除數
if ( i%j == 0 ) mod_counter ++ ; //當被整除時,整除計數 +1
if ( mod_counter == 2 ) printf ("%3d,\t",i);
//當被整除次數只有 2 次,為質數並顯示
}
pause(); //畫面暫停
}
如果把只能被 1 整除的部分去除的話;只有剩下被自己整除的部份,
代表著只能被整除 1 次,程式碼如下:
語法:
// 質數計算
#include <stdio.h> //載入函式庫 stdio
#include <stdlib.h> //載入函式庫 stdlib
#define clrscr() system("CLS") //畫面清除巨集
#define pause() puts("\n") & system("PAUSE") //畫面暫停巨集
#define Max 60//定義最大值常數 = 60
int main()
{
unsigned long int i,j,mod_counter; //for_loop 變數 i,j;整除統計 mod_counter
clrscr(); //畫面清除
for ( i=2; i<=Max; i++ ) { //座取餘數除法的Loop1,i 為被除數
mod_counter = 0; //整除統計歸零
for ( j=2; j<=i; j++ ) //座取餘數除法的Loop2,j 為除數
if ( i%j == 0 ) mod_counter ++ ; //當被整除時,整除計數 +1
if ( mod_counter == 1 ) printf ("%3d,\t",i);
//當被整除次數只有 1 次,為質數並顯示
}
pause(); //畫面暫停
}
