c - 在 do-while 循环中确定用户输入的变量是否为质数

标签 c primes

所以我的任务如下:构造一个 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/

相关文章:

c - 两个信号量不通信

c - 函数计算并返回两个值

python - 为什么我的素数筛返回相同结果的速度比在 Python 2.7 中查找素数的暴力方法慢?

recursion - 递归函数导致堆栈溢出

c - 从c中的文件中删除一个单词

我可以检查指针是否由 malloc/calloc/realloc 分配吗?

algorithm - 计算连续素数分解

javascript - 这个主要的测试功能是如何工作的?

algorithm - 计算 L 和 R 之间至少有一个介于 1 到 50 之间的质因数的数

c++ - 2 昏暗数组和双指针