2017-02-05 7 views
0

いくつかのコードを改良するのに問題があります。私のコードは、数字 "n"をとり、その多くの素数を計算します。私は出力データの行ごとに10素数を表示する必要があります。任意のヒントをいただければ幸いです。1行に10個の出力が必要

#include <stdio.h> 

int main() 
{ 
    int n, i = 3, count, c; 

    printf("How many primes would you like?"); 
    scanf("%d",&n); 

    if (n >= 1) 
    { 
     printf("2"); 
    } 

    for (count = 2 ; count <= n ; ) 
    { 
     for (c = 2 ; c <= i - 1 ; c++) 
     { 
     if (i%c == 0) 
      break; 
     } 
     if (c == i) 
     { 
     printf(" %d",i); 
     count++; 
     } 

     i++; 
    } 

    return 0; 
} 
+0

何いつでも改行(\ n)を出力しないと思っていますか? – Jens

+0

あなたの素数決定メカニズムは極端に粗い(遅いという意味です)ことに注意してください。効果的だが、非常に遅い。 10,000の素数(104729は10,000番目の素数)を探してみてください。 –

答えて

1

ちょうどあなたがすでに2を印刷初めて

printf(" %5d", i); 
    /* ^to help align the numbers 

if ((count + 1) % 10 == 0) 
    fputc(stdout, '\n'); 

修正をしてみてください。

-1
bool is_prime(int anyNum) //takes an integer array returns, is_prime 
{ 
    bool is_prime = true; 
for (int c = 2; c <= anyNum - 1; c++) 
{ 
    if (anyNum % c == 0) 
    { 
     //printf("%d is not prime\r\n" , anyNum); 
     is_prime = false; 
    } 
} 
return is_prime; 
} 

int main() 
{ 
int num_primes; 
printf("How many primes would you like: "); 
std::cin >> num_primes; 

printf("\r\nScanned Primes Are---\r\n"); 
int foundPrimes = 0; 
int x = 0; 
for (; x <= num_primes; x++) 
{ 
    bool gotLuckyFindingPrime = is_prime(x); 
    if (gotLuckyFindingPrime) 
    { 
     if (foundPrimes % 10 == 0) 
     { 
      printf("\r\n"); 
     } 
     printf("  %d", x); 
     foundPrimes = (foundPrimes + 1) % 10; 
    } 
} 
} 

あなたがそれを行うには

1

一つの方法は、番号が印刷されますたびに増分され、別のカウンタ変数を持つことである書式設定を試すことができますあまりにもcmdを上示す10桁を、処理します。この条件(counter % 10 == 0)trueある場合\nすることにより、新しい行を印刷すると1

int counter = 1; 

でそれを初期化します。

if (counter % 10 == 0) 
      printf("\n"); 

ここでは行ごとに10番号を印刷し、あなたの完全なコードがあります:

#include<stdio.h> 

int main() 
{ 
    int n, i = 3, count, c; 
    int counter = 1;   // <------ added this 

    printf("How many primes would you like?"); 
    scanf("%d",&n); 

    if (n >= 1) 
    { 
     printf("2"); 
    } 

    for (count = 2 ; count <= n ; ) 
    { 
     for (c = 2 ; c <= i - 1 ; c++) 
     { 
     if (i%c == 0) 
      break; 
     } 

     if (c == i) 
     { 
      if (counter % 10 == 0)  // <------ added this if-statement 
        printf("\n"); 

      printf(" %2d", i); 
      counter++;    // <------ added this 
      count++; 
     } 

     i++; 
    } 
    printf("\n"); 
    return 0; 
} 
+0

これは素晴らしい作品です!ありがとう、出力データを整列する方法に関するアドバイス? –

+0

各番号の間にさらにスペースを入れたいですか? – Yousaf

関連する問題