我在一个素数程序中输入1,它在c++中没有显示任何输出


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 numbern";
}
else{
std::cout << input << " is not a prime number.n";
break;
}
}
}
}
else{
std::cout << input << " is not a prime number.n";
}

我试着在这个程序中输入1,但由于某种原因,它没有显示任何输出。根据程序,它应该输出"1不是素数"。但事实并非如此。知道为什么吗?

这是终端输出

PS C:UsersAdministratorcpp class> cd "c:UsersAdministratorcpp class" ; if ($?) { g++ prime.cpp -o prime } ; if ($?) { .prime }
___________PRIME_OR_NOT___________
Enter the number : 1
PS C:UsersAdministratorcpp 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 numbern";
}
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 numbern";
}
else if(input < 2){
std::cout << input << " is not a prime numbern";
}
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 numbern";
}
else{
std::cout << input << " is not a prime number.n";
break;
}
}
}
}
else{
std::cout << input << " is not a prime number.n";
}

它正在工作。我将第一个if代码块更改为这个if代码块。

谢谢克里斯。

相关内容

最新更新