2条回答 默认 最新
CodeXTreme工作室 2023-10-09 18:55关注以下是我对代码的修改和解释:
void main()应该被替换为int main(),因为标准的C语言中的主函数应该返回一个整数值。
你在代码中使用了未定义的变量p和q,你需要在使用这些变量之前声明它们。
flagp-1和flagq可能应该是其他值初始化,例如0。
你的大数循环终止条件似乎是错误的,你需要明确你的循环终止条件。
你的判断素数的逻辑似乎有问题,你需要更仔细地检查它。
你的printf语句的位置可能使你的输出出现在不适当的地方。
以下是我对代码的大致修改:#include<stdio.h> #include<math.h> int main() { int n, p, q; int flagp = -1, flagq = 1; // flag needs to be initialized printf("请输入一个大于2的偶数:"); scanf("%d", &n); for (p = 2; p < n; p++) { // test for prime number for (int i = 2; i <= sqrt(p); i++) { if (p % i == 0) { flagp = 0; break; } } if (flagp == 0) { continue; } else { break; // if p is prime, no need to test q } } for (int i = 2; i <= sqrt(n - p); i++) { // test for prime number if (n - p % i == 0) { flagq = 0; break; } } if (flagp == 1 && flagq == 1) { printf("%d\n", p); } else { printf("没有找到两个都是质数的数\n"); } return 0; }本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
