为什么j=n不起作用#include<stdio.h> #include<math.h> int prime(int x) { int i,k; if(x==1) return 0; k=(int)sqrt(x); for(i=2;i<=k;i++) { if(x%i==0) return 0; } return 1; } int main() { int M,n=0,j; scanf("%d",&M); for(j=1;j<=M;j++) { if(j==n) break; if(prime(j)) { n=M-j; if(prime(n)) printf("%d %d\n",j,n); } } return 0; }这个我后面有给n赋值为M-j为什么还是不起作用
时间: 2023-12-01 18:03:11 浏览: 100
出错,include后调用不了,函数
你的代码中,`j` 的初始值为 `1`,而 `n` 的初始值为 `0`。因此,当你在 `if(j==n)` 这一行检查条件时,这个条件永远不会满足,因为 `j` 和 `n` 的值不相等。
如果你想要让 `n` 的初始值为 `M`,你需要在输入 `M` 的语句之后添加一行 `n = M;`,将 `n` 的值设置为 `M`。这样,当你在循环中找到一个素数 `j` 时,`n` 的值将被设置为 `M - j`,从而使 `if(j==n)` 这个条件得到满足,跳出循环。
阅读全文