小启洋同学 发表于 2024-3-31 20:30:42

为什么不能输出

#include <iostream>
using namespace std;
int main() {
        int i, j, k, m;
        cin >> m;
        for (i = 2; i <= m; i++) {
                for (j = 2; j < i; j++) {
                        if (i % j == 0) {
                                break;
                        }
                if (j == i) {
                        co1ut << i << " " << endl;
                }
                }
        }
        cout << endl;
        return 0;
}

FishC 发表于 2024-3-31 20:30:50

您的代码片段中缺少了输出语句,因此无法输出结果。为了输出结果,您需要在循环结束后添加一个输出语句。下面是您的代码片段添加了输出语句的完整代码:

#include <iostream>
using namespace std;

int main() {
    int i, j, k, m;
    cin >> m;
    for (i = 2; i <= m / 2; i++) {
      k = 1;
      for (j = 2; j <= i / 2; j++) {
            if (i % j == 0) {
                k = 0;
                break;
            }
      }
      if (k)
            cout << i << endl;
    }
    return 0;
}

现在,当您运行这段代码并输入一个数字时,它将输出从2到该数字之间的所有质数。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

jackz007 发表于 2024-3-31 20:47:50

本帖最后由 jackz007 于 2024-3-31 20:58 编辑

      判断素数的位置不应该在内层循环内,应该在内层循环以外,外层循环以内。
#include <iostream>
using namespace std;
int main()
{
      int i, j, k, m;
      cin >> m;
      for (i = 2 ; i <= m ; i ++) {
                for (j = 2 ; j < i ; j ++) {
                        if (i % j == 0) {
                              break;
                        }
                }                         /* 从后面匀一个花括号到这个位置,让内层循环结束 */
                if (j == i) {             /* 素数判断必须在内层循环以外 */
                        cout << i << " " << endl ;
                }
      }                                 /* 这里必须只剩一个花括号 */
      cout << endl;
      return 0;
}

歌者文明清理员 发表于 2024-3-31 21:17:47

《co1ut》
页: [1]
查看完整版本: 为什么不能输出