解題思路:本題採用的演算法是,讓n被i除,如果number能被2~(number-1)之中的任何一個整數整除,則表示number肯定不是素數,不必再繼續被後面的整數除,因此,可以提前結束迴圈。
原始碼演示:
#include<stdio.h>//標頭檔案 int main()//主函式 { int number,i;//定義變數 printf("請隨機輸入一個數:");//提示語句 scanf("%d",&number);//鍵盤輸入需要判斷的數 for(i=2;i<=number-1;i++)//迴圈從2開始,到這個數的掐前一個數為止 { if(number%i==0)//如果取餘結果為0 break; } if(i<number) { printf("%d不是素數",number); } else { printf("%d是素數",number); } return 0; //函式返回值為0 }
編譯執行結果如下:
請隨機輸入一個數:5656不是素數--------------------------------Process exited after 4.465 seconds with return value 0請按任意鍵繼續. . .
讀者需要知道什麼是素數,素數一般指質數,是指在大於1的自然數中,除了1和它本身以外不再有其他因數的自然數。
此題的關鍵是看結束迴圈時i的值是否小於number,如果number能被2~(number-1)之間的一個整數整除,則必然是由break語句導致迴圈提前結束,即i並未達到number的值時,迴圈就終止了。
最新評論