2016-12-31 67 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");