C++;:使用质数而不是质数 我需要编写一个C++程序,从用户那里接收大于2的正数,并打印数字是不是素数。
提醒:如果一个数字只能被其自身和1中的余数整除,而不能被任何其他数字整除,那么它就是素数。因此,小二只能被它自己和1整除,而非小四也可以被2整除 但问题在循环中,他重复这些步骤 我对2177有个问题,它不是质数C++;:使用质数而不是质数 我需要编写一个C++程序,从用户那里接收大于2的正数,并打印数字是不是素数。,c++,C++,提醒:如果一个数字只能被其自身和1中的余数整除,而不能被任何其他数字整除,那么它就是素数。因此,小二只能被它自己和1整除,而非小四也可以被2整除 但问题在循环中,他重复这些步骤 我对2177有个问题,它不是质数 #include <iostream> #include <math.h> using namespace std; void main() { int nNumber; int i; cout << "Enter a num
#include <iostream>
#include <math.h>
using namespace std;
void main()
{
int nNumber;
int i;
cout << "Enter a number:" << endl;
cin >> nNumber;
if (nNumber >= 2)
{
for (i = 2; i <= sqrt (nNumber); i++)
{
if (nNumber % i == 0)
{
// he is repete the step her
cout << nNumber << " is not a prime number." << endl;
}
}
if (nNumber % i != 0)
{
cout << nNumber << " is a prime number. " << endl;
}
}
system("pause");
}
#包括
#包括
使用名称空间std;
void main()
{
int n编号;
int i;
无法编号;
如果(n编号>=2)
{
对于(i=2;i只需定义一个布尔变量并将其值设置为“true”。您只需运行一个循环“n/2次”由于最大除数是实际数的一半。因此,如果输入数可被“2-n/2”之间的任何值整除,请将布尔变量值设置为false。最后,根据布尔变量值打印结果。
看看这个链接
您没有描述您遇到的问题,但我运行此程序时得到的结果是:
2177 is not a prime number.
2177 is a prime number.
sh: 1: pause: not found
首先,您的应用程序正确地发现2177不是素数(在i=3
),然后您继续循环(这不是必需的或有用的,因为如果它找到额外的值,它只会再次打印该行)
但是,您的主要问题是,如果(nNumber%i!=0)
,即使找到了一个值,也总是执行行。此时i
具有固定值((int)sqrt(2177))+1
(即47)因为循环在该点完成并将保持在该值。因为2177不能被47整除,所以您打印出消息2177是一个素数。
此代码应该有效。添加了break语句-
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int nNumber;
int i;
cout << "Enter a number:" << endl;
cin >> nNumber;
if (nNumber >= 2)
{
for (i = 2; i <= sqrt (nNumber); i++)
{
if (nNumber % i == 0)
{
cout << nNumber << " is not a prime number." << endl;
break;
}
}
if (nNumber % i != 0)
{
cout << nNumber << " is a prime number. " << endl;
}
}
system("pause");
return 0;
}
#包括
#包括
使用名称空间std;
int main(){
int n编号;
int i;
无法编号;
如果(n编号>=2)
{
对于(i=2;i)您的标题不清楚。请使用并访问。因为您从未更改nNumber
的值,所以循环是无限的。我认为您应该在循环内部接受用户输入。@VTT什么?nNumber是限制,i是计数器,他确实更改了i。您需要记住,您已经打印了“is not prime”,如果有,则不打印“is prime”。您还应在知道值不是prime时退出循环。void main()
不正确,因为main()
应返回int
,使用名称空间std;
因名称空间污染而不受欢迎,而且,系统(“暂停”)
应该做什么?如果链接已损坏,则仅链接答案没有多大帮助。请总结链接中的信息。请。最大除数是sqrt(n),而不是n/2。对于大的数字,有很大的区别。