所以我的任务如下:构造一个 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");
}
最佳答案
一种可能性是引入一个执行素数检查的函数,这可以通过使用所有较小数字的检查除法来完成,并在找到素数后立即终止循环。可以在 this link 之后找到一个实现;代码可以重构为以下用于素数测试的函数。如果 n
是素数,则该函数返回 1
,否则返回 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;
}
关于c - 在 do-while 循环中确定用户输入的变量是否为质数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28712242/