2017-11-06 5 views
0

これは私の学校の割り当てです。素数に2つの配列を使用する

問題ステートメント:

「(素数のみ自体と1によって均等に分割することができる任意の整数である)、1から100までの素数を印刷するプログラムを書く

要件:配列を使用して1から100までの数値をとり、もう1つの配列で素数を取ってください。

ここに私のコードです:

#include <stdio.h> 
int main() 
{ 
    int x[100], a[100]; 
    int y, z; 
    printf("here is an array going 1-100 :D\n"); 
    for (y=2; y<=100; y++){ 
      x[y]=y; 
      printf("\n%d\n", x[y]); 
      for (z=2; z<=y; z++){ 
       a[z]=z; 
       if (a[z]%z==0){ 
        break; 
       } 
      } 
      if (z==a[z]){ 
       printf("\n%d is a prime number\n", a[z]); 
      } 
     } 

    return 0; 
} 

私は少しのためにこれに困惑してきました。私は通常、私の問題を解決する質問をGoogle検索しました。しかし、私は近いと感じています。私の2番目の配列にいくつか問題があると私は信じています。

私を親切に案内します。

+1

'のX [Y] = Y;': 'のy == 100' – BLUEPIXY

+0

は、あなたがサンプルを提供することができます場合、これは範囲外のエラーが発生します出力、エラーなど – roelofs

+0

'a [z] = z; (a [z]%z == 0){ break; } 'が常に実行されます。だから 'z == a [z]'は常に真です。 (そして常に '2は素数です') – BLUEPIXY

答えて

-1
#include <stdio.h> 
int main() 
{ 
    int x[100], a[100]; //just declaring two arrays, although a[] has 100 elements i wont use them all 
    int y, z;//these are for the counters that will be used in the for loop 
    printf("here is an array going 1-100 :D\n"); 
    for (y=2; y<=100; y++){ 
      x[y]=y;//this will set the array to 1-100 
      printf("\n%d\n", x[y]);//prints out said array 
     for (z=2; z<=y; z++){ 

     if (y%z==0){//prime number test 
      a[z]=z;//setting second array equal to prime number after it passes test 
       break; 
     } 
     } 
         if (y==z){ 
       printf("\n%d is a prime number\n", a[z]); 
      } 
     } 

    return 0; 
} 
+1

あなたの答えを説明する必要があります。特に、名前 'x'と' a'は自明ではないためです。 –

+0

申し訳ありませんが、私はちょうどそれを更新しました – matt213

+1

コードを正しく読みやすくするために書式を設定することも良いでしょう... –

0

次のように正しい答えを見つけてください -

#include <stdio.h> 
int main() 
{ 
    int x[100], a[100]; 
    int y,z; 
    z=0; 
    x[0]=1; 
    printf("here is an array going 1-100 :D\n"); 
    for (y=2; y<=100; y++){ 
      x[y-1]=y; 
      printf("\n%d\n", x[y-1]); 
      for (z=2; z<=y/2; z++){ 
       if (a[y-1]%z==0){ 
        break; 
       } 
      } 
      if (z>y/2){ 
       printf("\n%d is a prime number\n", x[y-1]); 
       a[z++]=x[y-1]; 
      } 
     } 

    return 0; 
} 
関連する問題