gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 20:17:34 27 4
gpt4 key购买 nike

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

所以这就是我所做的。输入 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. 首先,内部循环应该以 2 开头,而不是 1。即 j=2
  2. 你不应该做largest_prime=i在其他情况下,就像你发现任何数字都不能整除i一样那么它是一个素数,这是错误的。

下面我修改了您的代码以查找小于 n 的最大素数。但这可以通过制作外循环 for(i=n;i>=2;i--) 进一步改进一旦我们达到素数就打破循环。

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;
}

关于c - 我不知道为什么我的 C 代码总是返回 128,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57086597/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com