我想写一个程序,接受一些输入数字,然后检查它们是否是素数。我是这样写的:
#include <iostream>
using namespace std;
bool isPrime (int number)
{
for (int i=2; i<number; i++)
{
if(number % i == 0)
return false;
else
return true;
}
}
int main()
{
int y;
bool z;
cout << "Enter a positive integer: ";
cin >> y;
z = isPrime (y);
if(z==true)
cout <<"number is prime" << endl;
else
cout << "number is not prime" << endl;
system("PAUSE");
return 0;
}正如您所看到的,我想使用函数和for循环。但这段代码只有一个号码。我想循环整个输入过程。我怎么能做到呢?
发布于 2015-05-06 22:31:48
只需在整个main内容周围设置一个循环:
int main()
{
while (true)
{
int y;
bool z;
cout<<"Enter a positive integer: ";
cin>>y;
z= isPrime (y);
if(z==true)
cout <<"number is prime" << endl;
else
cout << "number is not prime" << endl;
}
system("PAUSE");
return 0;
}发布于 2015-05-06 22:30:20
想想这能做些什么:
for (int i=2; i<number; i++)
{
if(number % i == 0)
return false;
else
return true;
}假设i为3或更高。然后在第一次迭代中,它检查number是否可以被2整除。如果是,那么它不是素数,因此返回false。但是如果它是不可除的,那么函数返回true (意思是number应该是素数) --即使它不应该(例如,9,它不能被2整除,也不能被素数整除)。
解决方案是,只有在知道数字不能除数(即,在true循环完成后)时才返回for:
for (int i=2; i<number; i++)
{
if(number % i == 0)
return false;
}
return true;至于输入循环,您可以将程序的输入/输出部分放在while循环中:
while(true) {
cout << "Enter a positive integer: ";
cin >> y;
z = isPrime (y);
if(z==true)
cout <<"number is prime" << endl;
else
cout << "number is not prime" << endl;
}然后它将继续读取一个数字,检查它是否为素数,并在一个循环中打印结果。您可以进行检查(例如,“如果数字小于0(即无效)退出循环”)
发布于 2015-05-06 22:32:35
非常简单:只需将想要重复的部分包装在一个循环中:
int main() {
int y;
bool z;
while (true) {
cout<<"Enter a positive integer: ";
cin>>y;
z= isPrime (y);
if(z==true)
cout <<"number is prime" << endl;
else
cout << "number is not prime" << endl;
system("PAUSE");
}}
这个程序永远不会停止。在C++中,只要x为真,while(x)就会反复运行代码块。在本例中,x只是true,所以它永远运行代码。
值得注意的是:我看到您在else语句之后缩进了三行代码,但没有使用大括号。在C++中,如果不使用大括号,则if、else、while、for等只在一行上工作。要使它们在多行上工作,请使用以下花括号:
if(z==true) {
cout <<"number is prime" << endl;
}
else {
cout << "number is not prime" << endl;
system("PAUSE");
}https://stackoverflow.com/questions/30088741
复制相似问题