例16:C語言實現輸入一個大於3的整數n,判斷他是否為素數(質數)。
解題思路:本題采用的算法是,讓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 }
編譯運行結果如下:
請隨機輸入一個數:56 56不是素數 -------------------------------- Process exited after 4.465 seconds with return value 0 請按任意鍵繼續. . .
讀者需要知道什么是素數,素數一般指質數,是指在大於1的自然數中,除了1和它本身以外不再有其他因數的自然數。
此題的關鍵是看結束循環時i的值是否小於number,如果number能被2~(number-1)之間的一個整數整除,則必然是由break語句導致循環提前結束,即i並未達到number的值時,循環就終止了。