如何解决C ++嵌套循环素数
我有一个无法解决的问题,我努力工作,没有一个完整的解决方案 我需要输入一些士兵,然后检查 序列号乘积=士兵人数 和 检查序列号之一是否为 PRIME 。 结果,我需要打印一次带给我产品的2个序列号 例如:
数字= 20
我需要打印
2 10
4 5
Number = 120
我需要打印
2 60
3 40
5 24
6 * 20不能打印,因为它们都不是质数 等等
Number = 48
我需要打印
2 24
3 16
4 * 12不能打印,因为它们都不是素数
以此类推 除了发现其中一个是素数之外,我一切都很好 代码是:
int armysize;
cout << "Please type how many soldiers do you have in your army:" << endl;
cin >> armysize;
int serialnumproduct = 0;
for (int soldiernum = 2; soldiernum < sqrt(armysize); soldiernum++)
{
for (int nextsoldier = 2; nextsoldier <= armysize/2; nextsoldier++)
{
serialnumproduct = soldiernum * nextsoldier;
if (serialnumproduct == armysize && soldiernum != nextsoldier)
cout << soldiernum << " * " << nextsoldier << " = " <<
serialnumproduct << endl;
}
}
return 0;
解决方法
像这样的函数应该告诉您数字是否为质数。您需要确保要处理的数字适合您计算机上的int
,或更新代码
bool IsPrime (int ninteger)
{
bool prime (true);
for(auto i = 2 ; i<ninteger ; ++i)
{
if (ninteger%i == 0)
prime = false;
}
return prime;
}
,
基本上你需要的是一个函数来显示 soldiernum
是否是素数。我使用了一个 prime_test()
函数,并在第 34 行将其用作 if()
语句,因此代码查看是否应该使用 soldiernum
。
结果如下:
Please type how many soldiers do you have in your army:
400
2 * 200 = 400
5 * 80 = 400
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
bool prime_test (int num)
{
bool prime (true);
for(int i = 2 ; i<num; ++i)
{
if (num%i == 0)
prime = false;
}
return prime;
}
int main(){
int armysize;
int count=2;
bool isPrime = true;
cout << "Please type how many soldiers do you have in your army:" << endl;
cin >> armysize;
int serialnumproduct = 0;
for (int soldiernum = 2; soldiernum < sqrt(armysize); soldiernum++){
for (int nextsoldier = 2; nextsoldier <= armysize/2; nextsoldier++)
{
serialnumproduct = soldiernum * nextsoldier;
if (serialnumproduct == armysize && soldiernum != nextsoldier)
if(prime_test(soldiernum)==true) {
cout << soldiernum << " * " << nextsoldier << " = " <<
serialnumproduct << endl;
}
}
}
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。