C語言求1到n所有質數

時間 2023-06-06 03:33:01

1樓:殤雪璃愁

#include

#include

int lsprime(int n);

int main()

for (i = 1; i <=n; i++)return 0;

int lsprime(int n) /是素數返回1,否則返回0if (i > k &&n > 1)

return 1;

elsereturn 0;

2樓:網友

可以用埃拉託斯特尼篩法,也叫素數篩法,如果優化的好,可以每秒輕鬆計算10的6次方以內的所有素數。

一個c語言的問題,輸入一個整數n,計算出前n個質數之和。不曉得自己的程式**有問題……

3樓:神猶在

輸出你的**每次for迴圈得到的「質數」,與它的累加結果如下:

可以看到,你的程式每次得到的「質數」,其值不是2就是3。這是因為,在第二層for迴圈時b被賦值成2,並且如果a對b求餘不為0的話,b就會執行自加,變成3。

之後你在判斷a與b是否相等時,用錯了符號,將b的值直接賦值給了a,其結果始終為真。(其實在cpp中這個語句應該時不能編譯通過的)

然後a再在外層(第一層)迴圈內完成了自加,變成3或者4,當a為3時b會在b=3跳出內層迴圈,當為a為4時b會在b=2跳出迴圈,如此往復,迴圈i <=n次。

那麼將if()中的判斷語句修正後呢?

可以看到,a確實全是質數了,但還剩下一個問題,那就是所求的結果並非小於輸入之數的所有質數之和,而是從2開始,n(n為你所輸入之數)個質數之和。

你的i變數是多餘的,a即是每次迴圈中質數,所以迴圈節的條件只需要判斷a<=n就行。正確寫法:

#include

int main()

int n;

scanf("%d",&n);

int a,b,i;

int c=0;

i=1;for(a=1;a<=n;a++)

for(b=2;b

用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語言或者C 求 1到n 1出現次數問題

我好久沒有寫 了,具體的 我就不寫了。這裡給你提供一個思路吧。在1到n的迴圈裡,每次迴圈要做的就是把當前的整數轉換成字串,然後獲得當前字串的長度,做迴圈和字元1做比較。說白了就是雙迴圈,外迴圈控制整個1到n的整數遍歷。內迴圈控制當前整數所轉換成的字串與1進行比較。希望能幫到你! 安心 1到n 1出現...

c語言求1到100間奇數和以及,c語言求1到100間奇數和以及1 2 3 4 5 100的和

include stdio.h int math1 return sum int math2 sum i return sum int main 第一題 include void main printf d sum 第二題 include void main printf d sum 1 算術方法計...