我有一个我无法解决的问题,我努力工作,没有一个完整的解决方案,我需要输入一些士兵,检查序列号产品是否=士兵的数量,和检查其中一个序列号是否是。因此,我需要打印给我一次产品的两个序列号,例如:
数目= 20
我要打印
2 10
4 5
数目= 120
我要打印
2 60
3 40
5 24
请打印6*20康特,因为它们中没有一个是素数等等。
数目= 48
我要打印
2 24
3 16
4*12 Cant需要打印,因为它们都不是素数
所以,我做了所有的事情,除了找出其中一个数字是质数,代码是:
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;发布于 2020-11-11 15:18:32
像这个函数应该告诉你一个数字是否是素数。您需要确保您正在处理的数字可以适合您的计算机上的int,或更新代码。
bool IsPrime (int ninteger)
{
bool prime (true);
for(auto i = 2 ; i<ninteger ; ++i)
{
if (ninteger%i == 0)
prime = false;
}
return prime;
}发布于 2021-01-26 18:05:20
基本上,您需要的是一个函数来显示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;
}https://stackoverflow.com/questions/64788667
复制相似问题