C語言判斷數是否為素數與素數輸出
素數的概念:素數也叫質數,是一種隻能被自己本身和1整除的數並且大於1,當然0與1不是素數。
1.判斷單個數是否為素數(多組輸入)
我的思路是,首先輸入一個數,利用素數的概念來判斷是非為素數,是的話輸出素數;否則不輸出。
關於素數的判斷首先我們吧輸入的數當初被除數,我選擇用一個for循環來實現,從2開始當除數,每輪加1,一直循環去除被除數,一直除到被除數減一那個數,要是期間能被一個數整除則跳出循環不為素數,要是一直沒有被整除則輸出這個素數。
#include<stdio.h> int main() { int a=0, j; while (scanf_s("%d", &a) != EOF) { int flag = 1; for (j = 2; j < a; j++) { if (a % j == 0) { flag = 0; break; } } if (flag == 1 && a != 0 && a != 1)//0與1不是素數 printf("%d為素數。\n", a); else printf("%d不是素數。\n", a); } return 0; }
這裡我選擇引用一個局部變量flag來當作判斷是否為素數的標志,剛剛開始賦值為1,假如被整除瞭就變為0,最後直接判斷flag的值,1為素數;否則不是。
最後代碼運行
2.輸入范圍輸出范圍內的素數
這個算是上一個例子的高階版,這個題的我們得解決兩個問題:①把這個范圍的數全都進行輸出②判斷輸出的數是否為素數,是的話輸出否則不輸出。
關於問題一我選擇用一個for循環來不斷輸出這個數進行比較,因為輸入的是一個范圍必定有最大值和最小值,我們可以以最小值為起始數開始循環輸出,每次加1,直到加到最大值停止輸出。
第二個問題就利用上面例子的思路就可以,把他包括到第一個for循環裡面。
代碼如下
#include<stdio.h>//輸入一個范圍,求嘞個范圍裡面的素數 int main() { int m, n; scanf_s("%d %d", &m, &n);//輸入一個范圍,m為最小值,n為最大值 for (int i = m; i < n + 1; i++) { int flag = 1; for (int k = 2; k < i ; k++) { if (i % k == 0) { flag = 0; break; } } if (flag == 1 && i != 0 && i != 1) printf("%d ", i); } return 0; }
最後代碼運行
成功運行
3.總結
對於這個代碼我感覺唯一的難點在於對於break的理解,還有素數的概念,還有對於0與1不是素數的判斷上。
關於0與1不是素數我運用瞭相對暴力的做法,我選擇在最後flag的判斷裡面加入對輸入的值的判斷,隻有他不等於0或者1時才為素數否則不是。
到此這篇關於C語言判斷數是否為素數與素數輸出的文章就介紹到這瞭,更多相關C語言 素數內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!