gpt4 book ai didi

c++ - 我正在编写一个 cpp 程序来打印两个数字之间的所有质数。程序运行成功但未打印任何内容

转载 作者:行者123 更新时间:2023-12-04 16:53:15 24 4
gpt4 key购买 nike

#include <iostream>
using namespace std;
bool isPrime(int num){
for(int i=2;i<=num;i++){
if(num%i==0){
return false;
}
}
return true;
}
int main()
{
int a,b;
cin>>a>>b;
for(int i=a;i<=b;i++){
if(isPrime(i)){
cout<<i;
}
}
return 0;
}
请告诉我我的错误,程序运行成功但没有打印任何内容。

最佳答案

问题是您要检查来自 2 的所有除数至 num , 包括的。由于每个正整数都会自除,因此您找不到任何质数。最小的修复是更改循环退出条件以排除 num :

    for(int i=2;i<num;i++)
请注意,这会起作用,但效率很低。这是一个更快的版本。这个版本也拒绝任何小于 2 的值,因为 0 和 1 不是质数:
bool isPrime(int num){
if (num < 2){
return false;
}
if (num == 2){
return true;
}
if (num % 2 == 0){
return false;
}
for (int i=3; i*i<=num; i+=2){
if(num%i==0){
return false;
}
}
return true;
}
此版本对 2 进行了特殊情况检查,对于偶数。之后,它只检查奇数除数。一旦除数超过 sqrt(num),它就可以停止(当 i*i > num 时循环退出)。

关于c++ - 我正在编写一个 cpp 程序来打印两个数字之间的所有质数。程序运行成功但未打印任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68327292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com