2016-12-31 57 views
0

我想要爲每10個輸入分隔程序的輸出(打印)。代碼是找到從1到n的素數以及它們的中位數。在單獨的行中打印每個範圍10中的素數

我只是想打印像n的每個10個分開計數:

primes from 1 to 10: 
     from 10 to 20: 
     from 20 to 30: 

你能幫我做這件事嗎?

#include <stdio.h> 

int main() 
{ 
    int n, x, y, p, sum, sumx; 
    float arm; 
    sum = 0, sumx = 0; 
    printf("\n Enter the maximum value of n ="); 
    scanf("%d", &n); 
    printf("\n All prime numbers from 1 to %d are: ", n); 

    for (x = 2; x <= n; x++) 
    { 
     p = 1; 
     for (y = 2; y <= x/2; y++) 
     { 
      if (x % y == 0) 
      { 
       p = 0; 
       break; 
      } 
     } 
     if (p == 1) 
     { 
      sum += x; 
     } 
     if (p == 1 && x != 1) 
     { 
      printf("%d ", x); 
      sumx++; 
      arm = (sum * 1.0)/sumx; 
     } 
    } 

    printf("\nThe sum of all Prime numbers from 1 to %d =%d", n, sum); 
    printf("\nTotal prime numbers is %d", sumx); 
    printf("\nThe median of all Prime numbers from 1 to %d is %.2f", n, arm); 

    return 0; 
} 

snapshot

+0

您發佈的代碼有什麼問題?請[編輯](http://stackoverflow.com/posts/41406094/edit)您的問題並添加該信息。 – MJH

+0

試着解釋更多。 –

+2

幸運的是,沒有以0結尾的素數,因此重疊範圍(1..10與10..20重疊)不存在問題。你必須經常安排輸出換行符。範圍200..210是來自'x * 10 ..(x + 1)* 10'的第一個範圍,沒有任何素數(但是199和211是素數)。你期望在那個空虛的十年裏產生一條空白線路嗎?請注意,中位數是按排序順序排列的中間數 - 您似乎計算的是平均數,而不是中位數。 –

回答

1

你可以打印出「從_到_:」當你10到達X整除的值:

#include <stdio.h> 

int main() 
{ 
    int n, x, y, p, sum, sumx; 
    float arm; 
    sum = 0, sumx = 0; 
    printf("\n Enter the maximum value of n ="); 
    scanf("%d", &n); 
    printf("\n All prime numbers from 1 to %d are: ", n); 
    int upper = n < 10? n : 10; 
    printf("\nFrom 1 to %d: ", upper); 

    for (x = 2; x <= n; x++) 
    { 
     p = 1; 
     for (y = 2; y <= x/2; y++) 
     { 
      if (x % y == 0) 
      { 
       p = 0; 
       break; 
      } 
     } 
     if (p == 1) 
     { 
      sum += x; 
     } 
     if (p == 1 && x != 1) 
     { 
      printf("%d ", x); 
      sumx++; 
      arm = (sum * 1.0)/sumx; 
     } 

     if (x % 10 == 0 && x != n) { 
      int upper = (x + 10) > n? n : (x + 10); 
      printf("\nFrom %d to %d: ", x + 1, upper); 
     } 
    } 

    printf("\nThe sum of all Prime numbers from 1 to %d =%d", n, sum); 
    printf("\nTotal prime numbers is %d", sumx); 
    printf("\nThe median of all Prime numbers from 1 to %d is %.2f", n, arm); 

    return 0; 
} 

這將導致像這樣的輸出:

輸入的最大值N = 29張

所有素數從1到29:

從1至10:2 3 5 7

星期五OM 11〜20:11 13 17 19

從21至29:23 29

所有素數從1到29 = 129

總素數之和爲10

的所有素數從1到29的中位數是12.90

+0

是啊這是我想放的輸出可以給你的完整代碼:) 即時通訊一種初學者 Thx – Bimkl

+0

Bimki,完成。從代碼中粘貼其他部分。 –

0

我不明白你的問題清楚,但如果你想單獨爲素數爲10 20 20之間,或30,那麼你可以將它添加您的循環內線路

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

或者,如果你想你想10的質數在一條線上,然後

if(sumx%10 == 0) 
    printf("\n"); 
相關問題