【问题标题】:C++ nested loop prime numberC++ 嵌套循环素数
【发布时间】:2021-02-23 13:23:30
【问题描述】:

我有一个我无法解决的问题,我努力工作并没有一个完整的解决方案 我需要输入一些士兵并检查是否 序号积=士兵人数 检查其中一个序列号是否为 PRIME。 因此,我需要打印给我带来一次产品的 2 个序列号 例如:

数字 = 20

我需要打印

2 10

4 5

数字 = 120

我需要打印

2 60

3 40

5 24

6*20 不能打印,因为它们都不是素数 等等

数字 = 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;

【问题讨论】:

  • 我没有看到任何与素数有关的代码。你的问题是,“我如何检查一个数字是否是素数?”
  • 问题是,我如何检查 1 或使我找到的产品的数字是否为质数,例如数字 400 可以带给我:2 * 200 4 * 100 5*80 8* 50 10*40 16*25 我想要的唯一结果是:2*200 和 5*80

标签: c++ loops for-loop nested-loops primes


【解决方案1】:

基本上,您需要一个函数来显示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;
}

【讨论】:

    【解决方案2】:

    这样的函数应该告诉你一个数字是否是素数。您需要确保您处理的数字可以适合您机器上的 int,或者更新代码

    bool IsPrime (int ninteger) 
    {
    bool prime (true);
    for(auto i = 2 ; i<ninteger ; ++i)
    {
    if (ninteger%i == 0)
    prime = false;
    }
    return prime;
    }
    

    【讨论】:

    • 这是效率最低的解决方案,也不是开玩笑,每次迭代超过 20 亿次。
    • 它对我没有帮助,因为我无法添加额外的程序 :( ,仍然是初学者
    猜你喜欢
    • 2014-09-19
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多