用C語言求100到200之間的全部素數 每行輸出

2022-07-09 23:45:27 字數 6217 閱讀 5335

1樓:匿名使用者

#include "stdio.h"

#include "math.h"

main()

/*leap置0,並且跳出迴圈,因為不必繼續測試餘下的i+1到'm+1的平方根'了*/

if(leap)

}/*測試下一個 m */

printf("\nthe total is %d\n",h);/*輸出個數 h */

system("pause");/*用系統呼叫執行pause命令,等待使用者按任一鍵退出*/}

2樓:匿名使用者

100以內質數記憶法

100以內的質數共有25個,這些質數我們經常用到,可以用下面的兩種辦法記住它們。

一、規律記憶法

首先記住2和3,而2和3兩個質數的乘積為6。100以內的質數,一般都在6的倍數前、後的位置上。如5、7、11、13、19、23、29、31、37、41、43……只有25、35、49、55、65、77、85、91、95這幾個6的倍數前後位置上的數不是質數,而這幾個數都是5或7的倍數。

由此可知:100以內6的倍數前、後位置上的兩個數,只要不是5或7的倍數,就一定是質數。根據這個特點可以記住100以內的質數。

二、分類記憶法

我們可以把100以內的質數分為五類記憶。

第一類:20以內的質數,共8個:2、3、5、7、11、13、17、19。

第二類:個位數字是3或9,十位數字相差3的質數,共6個:23、29、53、59、83、89。

第三類:個位數字是1或7,十位數字相差3的質數,共4個:31、37、61、67。

第四類:個位數字是1、3或7,十位數字相差3的質數,共5個:41、43、47、71、73。

第五類:還有2個持數是79和97。

3樓:匿名使用者

#include "stdio.h"

#include "iostream.h"

#include "cmath"

int main()

i++;

}if (i>k)

i=2;

num=num+2;

}cout<<"\n";}

4樓:匿名使用者

空間 裡有 例程

其實,隨便 搜搜 就有的

c語言 求100—200之間的全部素數,並且輸出每10個換一行

5樓:諾諾百科

第一個問題的分析:如果滿足i<=k,則說明這個數不是素數,則不用輸出,不執行下面的printf的函式,只有滿足i>=k+1(其實是滿足1=k+1),才能判斷此數為素數,則輸出。所以程式是正確的。

第二個問題的分析:兩個程式的最終結果是一樣的,都是正確的。

程式自然結束後,會有i==k+1,此時是素數,列印數字;而如果是break出迴圈,則假設不成立,為合數,不列印字元,執行下一次迴圈。

6樓:奇文

1.程式自然結束後,會有i==k+1,此時是素數,列印數字;而如果是break出迴圈,則假設不成立,為合數,不列印字元,執行下一次迴圈。

回答追問:無論被break打斷還是自然執行,下一句執行的都是if語句,如果沒有if,會輸出所有值。

2.都正確,是為了判斷是否夠10個數,夠的話執行換行

7樓:

1. 先說:for(i=2;i<=k;i++) ,當迴圈正常結束時,也就是說從2到k,逐個都驗證了,沒強行跳出,說明沒打到因數。

此時,i=k+1,所以才有判斷if(i>=k+1)。

2.第2種對,因為for(i=2;i<=k;i++) ,當迴圈正常結束時, if(i>=k+1)時才應有輸出,也才涉及到是否達到10的倍數個,第1種當前素數後面緊跟的數不是素數時n的值不變,也會輸出換行,會多輸出換行的,雖然也是每行10個素數,但會有空白行,100-200之間素數恰好隔2個,看不出換行問題,擴大範圍後就能看得出了。

有個小問題,建議改掉: k=sqrt(m);會警告,問題在於sqrt函式返回值型別要求是double型,k是整型,建議改為 k=(int)sqrt(m);

8樓:焦拱

1. 注意 if(i>=k+1) 不在 for(i=2;i<=k;i++) 迴圈中,

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

if(m%i==0)

break;

if(i>=k+1)

當 for(i=2;i<=k;i++) 沒有被 break 打斷退出,那麼 i 在退出迴圈的值為 k+1 此時 if(i>=k+1) 為真,其實 if(i>=k+1) 就是為了判斷 m 是否是素數。

2 第二種寫法比較對,我們先看第一種

if(i>=k+1)

if(n%10==0)

printf("\n");

當某次迴圈進入 if(i>=k+1),輸出了10個素數,使得n=10,進入 if(n%10==0)列印換行符;

下次迴圈沒有進入 if(i>=k+1),但此時n還是為10,又進入了 if(n%10==0)列印換行符,此時列印多一個換行符。

9樓:新坤在華師

#include

#include

int main()

if(n%10==0)

printf("\n");

}printf("\n");

}第一個這樣改就行了,

c語言程式設計求100到200之間的素數,每行輸出6個數

10樓:

#include

#include

int ss(int n) /*檢查n是否為素數,如果是則返回1,否則返回0*/

int main(void)

printf("\ntotal prime=%d\n",j);

return 0;

}//運**況:

101 103 107 109 113 127131 137 139 149 151 157163 167 173 179 181 191193 197 199

total prime=21

請按任意鍵繼續. . .

11樓:小茶葉的

void main()}}}

12樓:

#include

int isp(int n)

int main()

if(j%6==0)

printf("\n");}

c語言程式程式設計:輸出100到200間的全部素數,每行輸出5個素數。

13樓:刺友互

1、開啟vc2010後的介面。

2、點選檔案--->新建--->專案。點選 32位控制檯應用程式 輸入名稱

3、以上完成後,再點左擊c1後,右擊原始檔,——>新增——>新建項。

4、再選擇c++檔案,檔名稱,現在都可以寫程式了。

5、#define max 100   巨集定義max=100。

6、最後執行結果如下。

14樓:匿名使用者

#include

#include

int ss(int n) /*檢查n是否為素數,如果是則返回1,否則返回0*/

int main(void)

printf("\ntotal prime=%d\n",j);

return 0;}

15樓:匿名使用者

#include "stdio.h"

main()

if(leap)

}printf("\nthe total is %d\n",h);

system("pause");}

16樓:

#include

int main()

if (flag)

if (count == 5)

}return 0 ;}

17樓:

首先來理解素數的概念:

2, 3, 5, 7, 11, 13, 17, 19, 23, 29…………

這些除了他本身和1不能被任何其他數字整除的數字叫做“素數”,又叫“質數”。

那麼程式設計思路就有了:

那麼我們在外面再加一圈迴圈n,讓 n 的取值範圍在 100 <= n <= 200 之間,然後巢狀:

讓 i 在 1 < i < n 的範圍內進行迴圈,然後用 n % i,如果途中發現有非 0 的值,則表示該值非質數,讓s = 1終斷迴圈。

在迴圈的最後,判斷 s :如果 s 的值為0,則輸出n。

然後(還是在迴圈內)判斷n的值:若 n % 5 結果為4,則輸出"\n"。

這就是全部的演算法,我已經寫得很詳細了 - -

18樓:

#include

#include

int main()

if(flag) }

return 0;}

c語言輸出100-200之間的素數

19樓:知識慧

邏輯錯誤,準確位置為14行,正確**如下:

#include

int main()

}if (j>=i)

}return 0;

}擴充套件資料:

質數又稱素數。一個大於1的自然數,除了1和它自身外,不能被其他自然數整除的數叫做質數;否則稱為合數。

質數的個數是無窮的。歐幾里得的《幾何原本》中有一個經典的證明。它使用了證明常用的方法:

反證法。具體證明如下:假設質數只有有限的n個,從小到大依次排列為p1,p2,……,pn,設n=p1×p2×……×pn,那麼,

是素數或者不是素數。

如果為素數,則

要大於p1,p2,……,pn,所以它不在那些假設的素數集合中。

如果 為合數,因為任何一個合數都可以分解為幾個素數的積;而n和n+1的最大公約數是1,所以不可能被p1,p2,……,pn整除,所以該合數分解得到的素因數肯定不在假設的素數集合中。因此無論該數是素數還是合數,都意味著在假設的有限個素數之外還存在著其他素數。所以原先的假設不成立。

也就是說,素數有無窮多個。

其他數學家給出了一些不同的證明。尤拉利用黎曼函式證明了全部素數的倒數之和是發散的,恩斯特·庫默的證明更為簡潔,哈里·弗斯滕伯格則用拓撲學加以證明。

20樓:顛倒的世界

1、首先開啟vc6.0, 新建一個vc專案,新增標頭檔案,如下圖所示。

2、然後新增main函式,如下圖所示。

3、這時定義 i, j,count三個變數,如下圖所示。

4、然後使用第一層for迴圈,使用第二層for迴圈。

5、如果j能被i整除,就跳出內層迴圈,判斷迴圈是否提前跳出,如果 j < i 說明在 2~j之間,i有可整除的數。

6、最後使用printf列印出i,用count計數,每五個數換行。

7、最後執行程式,如下圖所示就完成輸出了。

21樓:麴生軒轅晨希

#include

void

main()}

22樓:惡俗你去咯某哦

質數又稱素數。一個大於1的自然數,除了1和它自身外,不能被其他自然數整除的數。

23樓:匿名使用者

你每次判斷完一個數之後,應該要把count重新置0。

if(count==0) printf("%d\n",n);

else count=0;

24樓:yi指liu沙

我這有個c++語言的**,你自己改改就行了#include

#include

#include

using namespace std;

int main()

}if(flag==true)

}for(i=0;i

cout<

return 0;}

用c語言for迴圈求1到100之和

sum sum i 這一句寫在了for迴圈的外面,意思就是先作for迴圈至i 101,最後執行sum sum i,輸出為101。更改,把sum sum i寫到迴圈裡面。include int main void printf d sum 直接累加 即可。include int main includ...

求c語言2019到20000之間的素數

include include int isprimer int x return flag void main 呼叫isprimer函式 for i x i y i 鍵盤輸入x和y為 2012和20000!結果是 17029是素數 17033是素數 17041是素數 17047是素數 17053是...

求大神用c語言編寫這道程式,求大神用c語言編寫這道程式

請家現再幫我解決補充問題 間 20137月514 44 25 目 想用if功能實現輸入字元y則顯示123否則顯示321 include char main void 何輸入char或者int結都確 vc6.0執行結 請輸入 y n y 12 ress any key to continue請輸入 y...