酷代码 AI
菜单

任意输入一个数 n ( n < = 10 11 ) n(n<=10 11 ),判断它是否为质数,如果是质数,输出1;如果不是质数,输出0。 所谓质数,是除了1和他本身外,不能被别的数整除的数,如2,3,5,7,11,13,17……。 提示:质数只能1和他本身整除,也就是,从2到它的一半(甚至能缩小到根号n),没有一个数能除尽。可以设置一个标志,有除尽的标志改变。还有,变量记得开long long 输入 一个整数 N N 输出 输出0或者1 语言方向:C++

以下是实现该功能的 C++ 代码: ```cpp #include <iostream> #include <cmath> int main() { // 由于 n 的范围是 n <= 10^11,所以使用 long long 类型来存储输入的整数 long long n; std::cin >> n; // 质数的定义要求大于 1 if (n <= 1) { std::cout << 0 << std::endl; return 0; } // 从 2 开始到根号 n 进行遍历,判断是否存在能整除 n 的数 for (long long i = 2; i <= std::sqrt(n); ++i) { if (n % i == 0) { // 如果存在能整除 n 的数,说明 n 不是质数,输出 0 std::cout << 0 << std::endl; return 0; } } // 如果没有找到能整除 n 的数,说明 n 是质数,输出 1 std::cout << 1 << std::endl; return 0; } ``` 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: 1. 要注意质数的定义,1 不是质数,所以在判断时需要对小于等于 1 的数进行特殊处理。 2. 由于输入的数范围达到 10^11,需要使用 `long long` 来避免整数溢出。 3. 在进行循环判断时,遍历范围可以优化到根号 n,这样能减少不必要的计算,提高效率,但要注意使用 `std::sqrt()` 可能会因为浮点数误差带来的一些问题。 [2026-02-05 12:42:13 | AI写代码神器 | 391点数解答]

服务商
相关提问
发财导航,免费问AI
实用工具查看更多