練習C語言的第二天及第二題,我們來談一談對素數的判斷。
提到素數,想必大家都不陌生。
素數,就是質數,大于1的一個正整數,指的是它不能被除了1與它本身以外的其它自然數整除,給幾個最簡單的例子,2就是素數、3也是素數、5也是素數。
很明顯可以看到,這些數都不能被除了1與它本身以外的其它自然數整除。
那判斷能否整除的條件,自然就是取餘數。
比方以3為例,在1和它本身之間的數為2,而3除以2取餘為1,不為零,則說明它為素數。
反之,以6為例,6除以2取餘為0,則說明它不為素數。
那麼,在知道如何判斷素數的邏輯之後,我們就可以動手來寫代碼了。
在程序中,我們一般用mod來代表取餘數,也就是用%這個符号來代表。
首先,我們要輸入一個正整數N,也就是用到scanf。
之後對該正整數N進行判斷。
注意,這裡其實做的時候蠻有問題的,因為要判斷是否為素數,就要讓它對從1到它本身(開區間)進行整除,隻要有一個能整除,那就說明不是素數,反之,則為素數。
需要用到一個for循環來進行遍曆,再在for循環裡進行條件判斷。
如圖所示:
在最開始做的時候,诶,我按照自己的邏輯慢慢寫的,可還是産生了問題,為什麼會這樣呢,原因歸根結底在于for循環裡寫printf打印語句,執行了很多次,導緻最終輸出的結果多種多樣。
所以,為了避免這個問題,避免重複打印的問題,必須得把打印的語句給挪到for循環外面。
那挪到外面之後呢,我們就要對for循環中進行處理,可以用一個計數來代替,比方說當判斷不為素數的時候,計數加一,反之,則計數不變化。
之後再在for循環之外對這個計數進行判斷不就行了麼。
代碼如下所示:
#include<stdio.h>
int main(){
int N = 0;
int count = 0;
scanf("%d", &N);
while(N<=1){
printf("please input again\n");
scanf("%d", &N);
}
for(int i = 2; i < N; i ){
if(N%i == 0){
count ;
}
}
if(count==0){
printf("it is a prime\n");
}
else{
printf("it is not a prime\n");
}
}
結果:
總結:總的來說,判斷是否為素數還是蠻簡單的,當然了,判斷是否為素數其實不一定就是用這種方法,也可以用其它方法,歡迎大家一起讨論。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!