C語言實現質數的判斷
阿新 • • 發佈:2019-02-19
/*
* 檔名:質數判斷.c
* 功能描述:判斷一個數是否為質數
* 編輯人:王廷雲
* 編輯時間:2017-1-10
*/
#include <stdio.h>
int main(void)
{
int num;
fprintf(stdout, "請輸入一個正整數:");
/* 獲取並檢查使用者輸入 */
while (1)
{
if (fscanf(stdin, "%d", &num) != 1) // 檢查輸入是否為整數
{
fprintf(stderr, "輸入錯誤!請重新輸入:") ;
while (getchar() != '\n'); // 去掉多餘的非法字元
continue;
}
else if (num <= 0) // 檢查輸入是否為正數
{
fprintf(stderr, "請輸入錯誤!請輸入正整數:");
continue;
}
else
break;
}
/* 質數判斷
* 質數:只能被1和本身整除,最小質數為2
*/
#if 1 /* 方法一:定義法 */
int i;
for (i = 2; i < num; i++)
{
if (num % i == 0)
{
break;
}
}
if (i == num) // 除了1以外只有自己能整除自己
fprintf(stdout, "整數%d為質數\n", num);
else
fprintf(stdout, "整數%d不是質數\n", num);
#else /* 方法二:計數法 */
int i;
int count = 0;
for ( i = 1; i <= num; i++)
{
if (num % i == 0)
{
count++; // 統計能夠整除自己的個數
}
}
if (count == 2) // 只有1和自己兩個數可以整除自己
fprintf(stdout, "整數%d為質數\n", num);
else
fprintf(stdout, "整數%d不是質數\n", num);
#endif
return 0;
}