1. 程式人生 > >用c語言程式實現對素數的判斷

用c語言程式實現對素數的判斷

題目:

輸出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;
    }

    這個程式碼執行出來的結果就是正確的了,就像下圖這樣:

    哈哈哈哈大功告成!

  • 寫程式碼其實也是一件需要鍛鍊的事情,自己寫出的程式碼執行成功的那一刻真的挺開心的。嗯!這只是一個開始,以後要更努力一點!感謝各位幫助我的同學和學長哈哈哈哈哈筆芯~