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 算術方法計...