用C語言求100 200之間的素數

2023-03-07 22:20:03 字數 4209 閱讀 4929

1樓:風若遠去何人留

對100到200之間的數,逐一判斷是否為素數,如果是則輸出即可。

判斷素數方法很多,以數學方法判斷為例,**如下:

#include

int is_prime(int n)//判斷n是否為素數。

int main()

2樓:帳號已登出

錯誤原因:迴圈結束之後,沒有把s重新置為1,所以在判斷完第2個素數之後第乙個非素數後就不再輸出了。

例子如下:?

直接編譯,程式輸出結果如下圖所示:

3樓:匿名使用者

你在每次判斷完這個數是否素數後沒有把s重新置為1,所以在判段2完第乙個非素數後就不再輸出了。

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

4樓:知識慧

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

#include

int main()

}if (j>=i)

}return 0;

5樓:顛倒的世界

首先開啟, 新建乙個vc專案,新增標頭檔案,如下圖所示。

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

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

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

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

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

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

6樓:惡俗你去咯某哦

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

7樓:匿名使用者

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

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

else count=0;

8樓:yi指liu沙

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

#include

#include

using namespace std;

int main()

}if(flag==true)

}for(i=0;icout

9樓:擁抱

應該是對素數的定義沒有理解吧。

素數,是定義為在大於1的自然數中,除了1和它本身以外不再有其他因數。

簡而言之,素數就是只能被1和它自己相乘得到的數。所以,除了1和它自己之外,它對其它數取餘數,結果都不是0。

同時,無論什麼數,除了它自己之外,最大的因數肯定是它的一半,所以只需要查詢到它的一半就可以了,不必從1查詢到它自己。而且,這裡是找素數,如果它的因數包括它自己的一半與數字2的話,那它也不會是素數了,所以查詢的界限定為比如 i/2 是不會有遺漏的。

至於你的原來的**裡為什麼是它自己開平方,我數學記得不多了,不是太清楚。

然後,就是根據定義去判斷乙個數是不是素數,那麼,就必須讓它與從2到它的一半的所有的數的餘數都不為0,反應到**裡就是不僅僅要 「i % n !=0」,而且還要全部能除的數都除一遍,也就是「 n ==k」,這個時候,才能確定這個數是素數了。

#include

#include

int main()}

printf(""

return 0;

}輸出截圖:

還有一張是把 i 的初始值改為 3 的輸出截圖,可以說是很規整了!

如有幫助,煩請點採納,謝謝!

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

10樓:諾諾百科

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

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

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

11樓:奇文

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

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

12樓:網友

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);

13樓:焦拱

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(""

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

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

14樓:新坤在華師

#include

#include

int main()

if(n%10==0)

printf(""

}printf(""

}第乙個這樣改就行了,

如何用c語言求300到500之間的素數?

c語言求100以內素數的問題

c語言程式設計題:求100到300之間的所有素數?

15樓:

摘要。#includeint main()}if (k ==0)}printf(""return 0;}

諮詢記錄 · 於2022-12-28

c語言程式設計題:求100到300之間的所有素數?

#includeint main()}if (k ==0)}printf(""return 0;}

加個條件是啥。

幫幫忙,謝謝謝謝。

謝謝。#include int main()}printf(""return 0;}

哥們,哥們。

快。這個嗎。

對對。這個。ok謝謝。

沒事,沒事。

求價位在100 200之間的紅酒

去大的全國連鎖超市看看智利的紅酒吧,你可以選到很不錯的酒,智利這個國家的卡曼尼和梅洛釀造的紅酒都很不錯的,這個定位不用醒酒器,在杯中晃2 3分鐘就可以了。至於橫放和豎放,普遍用木塞的就橫放,用螺旋蓋的都豎放。要醒酒的葡萄酒一般是久釀的酒,一些舊世界的酒需要20 40分鐘的醒酒時間,要買 的酒建議你到...

用c語言求1到n的階層的累加和,用C語言求1到N的階層 的累加和

如果不用階承函式 include void main printf ld n sum 輸出結果 如果用階承函式 include int jc int n void main int jc int n 階乘函式 思路 先定義一個函式用來計算一個數的階乘,在從1到n迴圈依次就其累加和,最後輸出累加和即可...

用c語言求1 1 2

1 像1 2這樣算出來的肯定是小數,不能是int型別,所以 sum z這個應該為float或double型別。2 for 迴圈如果不加 只能起作用到下面第乙個分號處,所以for下面要加上大括號.3 j根本沒有定義,從那裡來的 include int main printf 答案 lf n sum r...