c語言輸出2 100的素數

2021-09-25 10:58:36 字數 2241 閱讀 8175

這個**很巧妙,個人的理解都寫在了注釋裡

#include #include 

#include

//相關的**:[1]張景龍,黃靜,王愛松等.素數判定演算法的改進[j].河南科技學院學報(自然科學版),2013,(6):61-64.doi:10.3969/j.issn.1008-7516.2013.06.015.

//輸出100以內的素數,思路:

//判斷素數方法1:

//假如自然數n不是素數,則除1和其本身之外,必然至少存在兩個數a和b,使得a*b=n,

//則a和b中必有乙個大於或者等於sqrt(n),另乙個小於或者等於sqrt(n)。下面是粗略證明

//如果n是合數,則必有乙個小於或者等於根號n的素因子.

//因為任何合數都可表示為兩個或者更多個素數之積.

//假如n是合數且其素因子都大於根號n,那麼將產生矛盾:根號n*根號n>n.所以合數必有(至少)乙個不大於根號n的素因子.

//n的不大於根號的因子<=sqrt(n);n-1的不大於根號的因子<=sqrt(n-1),顯然sqrt(n-1)//

所以2~n內的自然數的因子範圍是2~sqrt(n);換句話說2~sqrt(n)的倍數覆蓋了了2~n範圍內的合數

//陣列記錄,初始化為0,判斷為合數置為1,

#define n 100

intmain()

;

inti,j;

//判斷條件中一定是是i<=sqrt(n)

//判斷素數方法2

//其中2-sqrt(n)(向下取整)是不是素數該咋判斷:

//根據:判斷自然數n是不是合數,就是看2~(n-1)之間有木有數能整除n,換句話說就是2~(n-1)之間有木有數的倍數是n。

//因為「2-sqrt(n)」中的數若是合數,它的因數肯定是在比自己小的數中產生,

//由2判斷了3是不是合數,由2,3判斷了4是不是合數,

//由2,3,4判斷了5是不是合數,依次類推。。。2~(sqrt(n)-1)判斷了sqrt(n)是不是合數

//綜合以上下面的這個迴圈結合了以上兩種判斷素數的方法,2-sqrt(n)(向下取整)部分用的是方法2結合方法1,

//(sqrt(n)(向下取整)+1)~n用的是方法1

for(i=2;i<=sqrt(n);i++)}}

for(i=2;i<=n;i++)

return0;

}

#include

#include

#include

//相關的**:[1]張景龍,黃靜,王愛松等.素數判定演算法的改進[j].河南科技學院學報(自然科學版),2013,(6):61-64.doi:10.3969/j.issn.1008-7516.2013.06.015.

//輸出100以內的素數,思路:

//判斷素數方法1:

//假如自然數n不是素數,則除1和其本身之外,必然至少存在兩個數a和b,使得a*b=n,

//則a和b中必有乙個大於或者等於sqrt(n),另乙個小於或者等於sqrt(n)。下面是粗略證明

//如果n是合數,則必有乙個小於或者等於根號n的素因子.

//因為任何合數都可表示為兩個或者更多個素數之積.

//假如n是合數且其素因子都大於根號n,那麼將產生矛盾:根號n*根號n>n.所以合數必有(至少)乙個不大於根號n的素因子.

//n的不大於根號的因子<=sqrt(n);n-1的不大於根號的因子<=sqrt(n-1),顯然sqrt(n-1)#define n 100

int main()

;int i,j;

//判斷條件中一定是是i<=sqrt(n)

//判斷素數方法2

//其中2-sqrt(n)(向下取整)是不是素數該咋判斷:

//根據:判斷自然數n是不是合數,就是看2~(n-1)之間有木有數能整除n,換句話說就是2~(n-1)之間有木有數的倍數是n。

//因為「2-sqrt(n)」中的數若是合數,它的因數肯定是在比自己小的數中產生,

//由2判斷了3是不是合數,由2,3判斷了4是不是合數,

//由2,3,4判斷了5是不是合數,依次類推。。。2~(sqrt(n)-1)判斷了sqrt(n)是不是合數

//綜合以上下面的這個迴圈結合了以上兩種判斷素數的方法,2-sqrt(n)(向下取整)部分用的是方法2結合方法1,

//(sqrt(n)(向下取整)+1)~n用的是方法1

for(i=2;i<=sqrt(n);i++)}}

for(i=2;i<=n;i++)

return 0;}

巢狀迴圈輸出2 100之間的素數

初學python,看到這行 有些費解,找到答案後在此分享一下。在python中false 0或空,true 1或非空。i j 取餘數,當餘數是0 能整除 是false,加上not變成true。不能整除相反。所以這句的意思是如果能整除則進行下面的 usr bin python3 coding utf ...

輸出100 200的素數 C語言

要輸出一定範圍的素數,就先要了解素數。素數也就是質數,也就是除數只有1和本身。再分析,其實乙個數的兩個除數,是乙個大乙個小的,在特殊情況下就是兩個除數相等。那麼我們也就只用思考在1 sqrt n n表示這個數,sqrt n 表示根號n 只要在這個範圍裡,n只能被乙個數整除,那必定是1,即n是素數。下...

C語言 N位絕對素數輸出

c語言 n位絕對素數輸出 首先,我們要了解什麼是絕對素數。素數是指在大於1的自然數中,除了1和它本身以外不再有其他因數的自然數。絕對素數是指本身是素數,其逆序數也是素數的數。例如 10321與12301是絕對素數。了解了這個概念之後,我們一步步來寫 我們寫乙個簡單的c語言素數程式,以100以內打個例...