/*我們認為2是第一個素數,3是第二個素數,5是第三個素數,依次類推。
現在,給定兩個整數n和m,0<n<=m<=200,你的程序要計算第n個素數到第m個素數之間所有的素數的和,包括第n個素數和第m個素數。
輸入格式:
兩個整數,第一個表示n,第二個表示m。
輸出格式:
一個整數,表示第n個素數到第m個素數之間所有的素數的和,包括第n個素數和第m個素數。
輸入樣例:
2 4
輸出樣例:
15*/
#include
int main()
{
int m,n,sum=0;//m,n讓用戶輸入,sum即素數之和
scanf("%d%d",&n,&m);
if(n==1)//從第一個素數開始算時要把第一個素數為2的特殊情況考慮進去
sum=sum+2;
int flag=0,count=1;//flag為一個標識變量,count為素數計數器
while(count<=m)
{
int i=2;
for(i=2;;i++)
{
flag=1;
int j=2;
for(j=2;j<i;j++)
{
if(i%j==0)//判斷是否為素數
{flag=0;
break;}
}
}
if(flag!=0)
{
if(count>=n)//當素數個數大於n時才相加
{
sum=sum+i;
count=count+1;
}
}
}
printf("%d\n",sum);
return 0;
}
我想問一下為什麼出錯了,原因是什麼?
你的程序根本不對,if(flag!=0)應該在i每次循環的時候都判斷
否則陷入死循環。
建議你調整代碼的縮進,你的代碼沒有正確的縮進是造成你程序寫不正確的主要原因。