C語言中求素數遇到點小問題,求幫忙

2025-03-23 07:30:31 字數 1177 閱讀 4883

1樓:網友

可以改為這樣:

#include

#include

void main()

int i,j,k,sum=0,m=0;

for(i=20;i<201;i++)

j=sqrt(i);

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

if(i%k==0)

goto lop;

printf("%d",i);

m; if(m%6==0)

printf("");

sum=sum+i;

lop:;printf("20至200中素數之和為%d",sum);

你那個輸出在if之後馬上就輸出,即當乙個數不能被2整除後它馬上輸出,此時並沒有判歷謹斷它是否能被2到sqrt(i)後面的數整除,應該把輸出素數那語句放肢芹基首租在第二個for語句之外。

2樓:網友

if(i%k==0)

break;

printf("%d ",i);

你這裡輸出得太急,如笑並果i不能被2整除就輸出了,也就是k還沒有累加到j就把i做為素數輸出了。你加乙個布林型的指示變數,如果在k從2到j的過程中,只要整除就是false,如果迴圈結束一直是true就證明是素數,然後輸出。

你看看i=9時會發生什麼就知道錯在**了。

布林型就是true或false,你可以用0或鋒公升孫者1表示能否被k整除銀鏈。

3樓:網友

/輸出20到200之間的素數及這些素數的和,每行輸出6個數。

#include

#include

void main()

int i,j,k,l,sum=0,m=0;

for(i=20;i<200;i++)

j=sqrt(i);

l=j; for(k=2;k<=j;k++)if(i%k==0)

break;

if(l==k)

printf("%d ",i);

m++;if(m%6==0)

printf(""納棗行);

sum=sum+i;

printf("20至200中素數之巖搏和為%d",sum);

主要問題在於原程式並不是所有都測試過了。所洞譁以加了一段判斷,只有迴圈到最後仍然存在時才可以確定為素數,從來輸出實現。

求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語言編寫素數展示的程式

分數太少啦。每個要求分還差不多。輸入的個正數,判斷其是否為素數。main int n,i,logo scanf d n if n for i i n i if n i logo break if logo printf 是素數 else if logo printf 不是素數 你還是把分給我吧,我急...

c語言中怎麼求數的尾數,c語言中怎麼求一個數的尾數

假設你輸入的是整數 那這個數的個位數就是 x 10 你說的是求位數?假設你輸入的是整數 用這個數不斷的除10 然後每除一次i就加一 直到為除到零 然後i就是這個數的位數啦 整數的話輸出n 10 小數不好判斷 include main c語言中怎樣判斷一個數是幾位 思路 因為c語言中整數除以整數等於整...