我正在创建代码,用于打印给定整数的一组素数之和。这是我到目前为止创建的内容:
#include <stdio.h>
#include <stdlib.h>
int is_prime(int m)
{
int i;
for(i=2; i<=m/2; i++)
{
if (m % i==0)
{
return 0;
}
}
return 1;
}
int main()
{
int num, min, max, sum = 0;
scanf("%d", &min);
scanf("%d", &max);
for(num = min; num <= max; num++)
{
if(is_prime(num))
{
sum += num;
printf("%d", num);
}
}
printf("=%d\n", sum);
return 0;
}
如果我输入10作为最小值,20作为最大值,它将打印出11,13,17,19,它将打印出60的总和。我只是想知道如何打印&#39; + &#39;在执行时列出的数字之间。
答案 0 :(得分:2)
解决方案是在第一个数字前面不打印加号,并在所有其他数字前面打印加号。为了实现这一点,我使用了一个带有false / true值的布尔值。
#include <stdio.h>
#include <stdlib.h>
int is_prime(int m)
{
int i;
for(i=2; i<=m/2; i++)
{
if (m % i==0)
{
return 0;
}
}
return 1;
}
int main()
{
int num, min, max, sum = 0;
scanf("%d", &min);
scanf("%d", &max);
bool first = true;
for(num = min; num <= max; num++)
{
if(is_prime(num))
{
sum += num;
if(!first)
{
printf("+");
}
printf("%d", num);
first = false;
}
}
printf("=%d\n", sum);
return 0;
}
此代码也适用于使用整数而不是布尔值:int first = 1;
和first = 0;