用c語言程式實現對素數的判斷
阿新 • • 發佈:2019-01-26
題目:
輸出1-N之間的所有素數
要求:
為了便於觀察結果,在控制檯裡每一行輸出5個數,並且這5個數之間以空格作為分隔
思路:
首先要知道什麼是素數以及如何判斷一個數是不是素數,素數就是除了1和它自身外,沒法被其他自然數整除的數;知道怎樣判斷素數之後就可以嘗試用C語言實現判斷了。
過程:
- 第一次寫出來的程式碼執行出來之後,有很多的亂碼,最後還是請教了學長才改過來的
- 然後我又運行了一次,emmmmm沒有很順利,我發現執行的結果裡面少了一個2,直接從3開始了,下面就是執行結果沒有2的樣子,順便附上程式碼
#include "stdio.h" int main() { int i, j, n, t = 0; printf("請輸入n:"); scanf("%d", &n); for (i = 2; i <= n; i++) { for (j = 2; j * j <= i; j++) { if (i % j == 0) break; } if (i % j != 0) { ++t; printf("%d\t ", i); if (t % 5 == 0) { printf("\n"); } } } return 0; }
我自己改了很多遍,但是沒有什麼用,甚至越改越不對哈哈哈,然後我就又去請教了學長和同學,他們給我指出了上面程式碼存在的問題:2%2==0,就直接跳出迴圈,不會輸出。解決方法就是:直接先輸出一個2,在進行後面的迴圈。於是我的程式碼變成了這個樣子:
-
#include "stdio.h" int main() { int i, j, n, t = 0; printf("請輸入n:"); scanf_s("%d", &n); printf("%d\t ", 2); t++; for (i = 2; i <= n; i++) { for (j = 2; j * j <= i; j++) { if (i % j == 0) break; } if (i % j != 0) { ++t; printf("%d\t ", i); if (t % 5 == 0) { printf("\n"); } } } return 0; }
這個程式碼執行出來的結果就是正確的了,就像下圖這樣:
哈哈哈哈大功告成!
-
寫程式碼其實也是一件需要鍛鍊的事情,自己寫出的程式碼執行成功的那一刻真的挺開心的。嗯!這只是一個開始,以後要更努力一點!感謝各位幫助我的同學和學長哈哈哈哈哈筆芯~