2016-10-21 8 views
1

これは私の素数を計算するためのコードです。 基本的に私はそれが素数であるかどうかをチェックするために計算したすべての前の素数で数分の1を割ります。私は正解を得ていませんでした。私は間違いを理解するためにコードを変更し続けました。ループに入るたびにiの値が0に初期化されていないことがわかりました。代わりに私は1,2,3です。なぜこれが起こっているのか理解できません。私はビジュアルスタジオを使用しています。 なぜこれが起こっているのか説明してください。変数の値が変更されていません

#include<stdio.h> 
#include<conio.h> 
int main() 
{ 
int primes[10000]; 
int i,j,k; 
int primecheck; 
primes[0]=2; 

k=1; 
for(j=3;;j+=2) 
{ 
    primecheck = 1; 
    i=0; 
    for(i=0;i<k;i++); 
    { 

     printf("%d\n%d\n%d\n",i,j,j%primes[i]);// this helped me figure 
               // out the problem 
     if(j%primes[i] == 0) 
     { 
      primecheck = 0; 
      printf (" %d, %d\n",j,primes[i]); 
     } 
     printf("%d\n",k); 

    } 
    if (primecheck == 1) 
    { 
     primes[k]=j; 
     printf("%d prime is %d\n",k+1,primes[k]); 
     k++; 
     if(k == 5) 
     { 
      break; 

     } 
    } 
} 
printf("%d",primes[k-1]); 
getch(); 

}

+6

を試してみてください(I = 0; I BLUEPIXY

答えて

0

ダミーループを使用しないでください。

for(i=0;i<k;i++); 

最後にセミコロンを削除してみてください。現在のコードでは、上記のループの下のセクションを繰り返し実行すると、ダミーループとして扱われます。だからために `

for(i=0;i<k;i++) 
{ 

} 
+0

同様の答え:http://stackoverflow.com/questions/37482904/whyを-didnt-the-compiler-warn-me-about-a-empty-if-statement –

+0

@ Vector9別の質問です。 – Stubborn

+0

はい。しかし、ユーザーが見落としたのと同じ問題 –

関連する問題