我制作了以下代码:
1 #include<stdio.h>
2 #include<stdbool.h>
3
4 bool c[500];
5 void main()
6 {
7 int i,n=1,j;
8 for (i=2; i<500; i++)
9 {
10 if (!c[i])
11 {
12 printf("%d is the prime number %d\n", i,n);
13 n++;
14 j=2;
15 while (j*i<500)
16 {
17 c[j*i]=1;
18 j++;
19 }
20 }
21 }
22 }
显示500以下的素数;现在,我怎样才能让程序显示所有这些数字的总和(所有素数低于500)只需几行?感谢您的帮助,我是C的新手
答案 0 :(得分:2)
sum
设置为零。sum
。sum
。因此,假设您的代码不起作用,您可以更改,对于上面的第1点:
int i,n=1,j;
成:
int i,n=1,j,sum=0;
第2点涉及改变:
printf("%d is the prime number %d\n", i,n);
成:
printf("%d is the prime number %d\n", i,n);
sum += i;
最后,第3点可以通过放置:
来制定printf("Sum of all those primes is %d\n", sum);
在最后的大括号之前。
对代码的更改(包括注释和更合适的变量名称,以使其可读)将类似于:
#include <stdio.h>
#include <stdbool.h>
// Find/sum all primes less than this number.
#define LIMIT 500
// Flag indicating a number is non-prime, initialised to zeros.
bool isComposite[LIMIT];
void main (void) {
int num, mult;
int count = 1, sum = 0;
// Check every number for primeness.
for (num = 2; num < LIMIT; num++) {
// Ignore if composite.
if (!isComposite[num]) {
// Print prime, add to sum.
printf ("%d is the prime number %d\n", num, count++);
sum += num;
// Mark all multiples of it as composite.
for (mult = num * 2; mult < LIMIT; mult += num) {
isComposite[mult] = 1;
}
}
}
// Now just output the sum.
printf ("The sum of those primes is %d\n", sum);
}
如果是课堂作业,请不要复制,你可能会被发现。我将它包含在内只是为了向您展示如果您遵循一些简单的规则可以获得多少可读代码,其中一些规则如下:
500
这样的“魔术”常量。答案 1 :(得分:2)
添加额外变量sum
喜欢这个
#include<stdio.h>
#include<stdbool.h>
bool c[500];
int main()
{
int i,n=1,j,sum=0;
for (i=2; i<500; i++)
{
if (!c[i])
{
printf("%d is the prime number %d\n", i,n);
sum+=i;
n++;
j=2;
while (j*i<500)
{
c[j*i]=1;
j++;
}
}
}
printf("Sum is %d",sum);
}
答案 2 :(得分:1)
1 #include<stdio.h>
2 #include<stdbool.h>
3
4 bool c[500];
5 void main()
6 {
7 int i,n=1,j; int sum = 0;
8 for (i=2; i<500; i++)
9 {
10 if (!c[i])
11 {
12 printf("%d is the prime number %d\n", i,n);
13 sum += i; n++;
14 j=2;
15 while (j*i<500)
16 {
17 c[j*i]=1;
18 j++;
19 }
20 }
21 } printf("sum: %d", sum);
22 }