我不知道为什么我的C代码总是返回128

时间:2019-07-18 03:11:07

标签: c

我正在尝试编写代码以确定小于数字n的最大质数。我不确定为什么无论输入什么,我的代码总是返回128。

这就是我所做的。输入n,然后为i从1到n运行for循环。然后运行另一个嵌套在第一个循环中的for循环,使j从1到i的平方根。如果i被j整除,则中断嵌套循环,否则为i分配最大的质数。重复。

#include <stdio.h>
int main(void)
{
    long i, j, n, largest_prime;
    printf("Enter a number: ");
    scanf("%ld", &n);
    for (i = 1; i <= n; i++) {
        for (j = 1; j*j <= i; j++) {
            if (i % j == 0)
                break;
            else
                largest_prime = i;
        }
    }
    printf("The largest prime is: %ld", largest_prime);
    return 0;
}

它总是返回128。

1 个答案:

答案 0 :(得分:1)

  1. 首先,内部循环应以2而不是1开头,即j=2
  2. 在其他情况下,您不应该将largest_prime=i设为i,就像您发现任何数字不能除以for(i=n;i>=2;i--)一样,这是一个错误的素数。

以下,我修改了您的代码以查找小于n的最大素数。但这可以通过以下方法进一步改善:制作外部循环int main(void) { long i, j, n, largest_prime; printf("Enter a number: "); scanf("%ld", &n); for (i = 1; i <= n; i++) { int isPrime = 1; for (j = 2; j*j <= i; j++) { if (i % j == 0){ isPrime = 0; break; } } if(isPrime==1)largest_prime = i; } printf("The largest prime is: %ld", largest_prime); return 0; } ,并在我们遇到质数时立即中断循环。

multiprocessing.managers.BaseManager