if(input == 2){
std::cout << input << " is a prime number.\n";
}
else if(input % 2 != 0){
for(int i = 3; i <= input; i+=2){
if(input % i == 0){
if(i == input){
std::cout << input << " is a prime number\n";
}
else{
std::cout << input << " is not a prime number.\n";
break;
}
}
}
}
else{
std::cout << input << " is not a prime number.\n";
}
我尝试在此程序中输入 1,但出于某种原因,它没有显示任何输出。 根据程序,它应该输出“1 不是质数”。但事实并非如此。 知道为什么吗? 这是在 C++ 中;
这是终端输出。
PS C:\Users\Administrator\cpp class> cd "c:\Users\Administrator\cpp class\" ; if ($?) { g++ prime.cpp -o prime } ; if ($?) { .\prime }
___________PRIME_OR_NOT___________
Enter the number : 1
PS C:\Users\Administrator\cpp class>
我尝试在代码中手动设置输入变量,但它也不起作用。 我期待程序输出“1 不是质数”。在终端。
如果您的输入是奇数,即
1
,您的所有输出都发生在循环中。第一个循环以 i = 3
开始,只要 i
小于或等于输入就循环。但是如果输入是1
,这个循环永远不会执行。
以下将纠正该问题。
if (input <= 2) {
std::cout << input << " is a prime number.\n";
}
else if (input % 2 != 0) {
for (int i = 3; i <= input; i += 2) {
if (input % i == 0) {
if (i == input) {
std::cout << input << " is a prime number\n";
}
else {
std::cout << input << " is not a prime number.\n";
break;
}
}
}
}
else {
std::cout << input << " is not a prime number.\n";
}
if(input == 2){
std::cout << input << " is a prime number\n";
}
else if(input < 2){
std::cout << input << " is not a prime number\n";
}
else if(input % 2 != 0){
for(int i = 3; i <= input; i+=2){
if(input % i == 0){
if(i == input){
std::cout << input << " is a prime number\n";
}
else{
std::cout << input << " is not a prime number.\n";
break;
}
}
}
}
else{
std::cout << input << " is not a prime number.\n";
}
它现在工作。我将第一个 if 代码块更改为这个 if 代码块。
谢谢克里斯。