#13951. [GESP202609 二级 C++] 第 10 题

[GESP202609 二级 C++] 第 10 题

有关如下 C++ 代码描述,变量都是整型,错误的是( )。

int n, limit,  i;
cout << "请输入一个正整数: ";
cin >> n;
if (n <= 1)
    printf("%d非素数",     n);
else if (n  == 2)
    printf("2是素数");
else {
    limit  = sqrt(n) +  1;
    for (i  = 2; i < limit;  i++)
        if (n  % i ==  0) {
            printf("%d非素数",     n);
            break;
        }
    if (i  >= limit)
        printf("%d是素数",     n);
}

{{ select(1) }}

  • n <= 1 条件用于判断输入 0、 1 以及负数时的情况,不能省略。
  • n == 2 条件及其相关代码省略,程序的输出结果没有区别。
  • break 语句不可以省略,否则非素数还将执行最后一行的语句。
  • limit = sqrt(n) + 1 语句中的 1 可以修改为其他大于等于 1 的正整数,执行结果不会有错误,但循环 次数增多,效率有所影响。