所以我的任务如下:构造一个do-while()循环,它继续提示用户输入一个整数,并确定输入的整数之和,直到遇到一个素数。素数不应包含在总和中。显示所有变量声明。
我已将所有变量正确加起来,但似乎无法使函数停止在素数上。为了纠正这个问题,我制作了变量" primecheck"并设置为2 ++认为它将是每个大于2的整数(显然不可能,但人们可能希望)。任何帮助将不胜感激!
int main (void)
{
int sum = 0, num = 0, i = 0, primecheck = 0, two = 2;
primecheck = two++;
do
{
printf ("Enter an integer: ");
scanf ("%d", &num);
if (num % primecheck == 0 && primecheck != num)
{
sum += num;
}
} while (num % primecheck == 0 && primecheck != num);
i = sum;
printf("%s%d%s", "Sum = ", i, "\n");
}
答案 0 :(得分:1)
一种可能性是引入一个执行素数检查的函数,这可以通过使用所有较小数字的校验除法来完成,并在找到素数时立即终止循环。可以在this link之后找到实现;代码可以重构为以下函数进行素性测试。如果1
为素数,则函数返回n
,否则返回0
。该实现使用显式while
循环,因为需求显然需要它。
int is_prime(int n)
{
int i=3;
int flag=0;
if (n%2==0)
{
return 0;
}
do
{
if (n%i==0)
{
flag=1;
break;
}
i+=2;
}
while (i*i<=n);
return flag;
}