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 的正整数,执行结果不会有错误,但循环 次数增多,效率有所影响。