【问题标题】:How to count the number of numbers below N having only one or two prime factors?如何计算 N 以下只有一个或两个质因数的数字的数量?
【发布时间】:2015-07-15 13:30:56
【问题描述】:

n 以下有多少个数只有一个或两个质因数?像 100 以下一样,有 91 个数除了 9 之外只有一个或两个质因数(其中一些是 60、66、78、90)。

我想用 C++ 来做这个。

【问题讨论】:

  • 课程作业? :)
  • 如果您不觉得自己解决这个问题具有远程挑战性,那么就改变路线。
  • 我的提示:不要分解所有 n 个数字,而只需计算所有可以构造为两个质数 p1 和 p2 与 p1*p2 的乘积的数字
  • @tobi303,IIUC,你需要这些加上素数 (p1*p2*x)<n 其中 p1
  • 我投票结束这个问题,因为它是一个“为我写这段代码”风格的问题。

标签: c++ counter factors


【解决方案1】:
#include<iostream>
using namespace std;
int main()
{
    long long num, i, k, counter, b = 0, a, flag;
    cout << "Enter Number" << endl;
    cin >> num;
    counter = 0;
    for (a = 2; a <= num; a++)
    {
        counter = 0;
        i = 2;
        for (i = 2; i <= a; i++)
        {
            flag = 0;
            k = 2;
            if (a%i == 0) {
                while (k <= i - 1) {
                    if (i%k == 0) {
                        flag = 1;
                        break;
                    }
                    k++;
                }
                if (flag == 0)
                {
                    counter++;
                }
            }
        }
        if (counter <= 2)
        {
            b++;
        }
    }
    cout << "Total Number Which Have One Or Two Prime Factor are :: " << b << endl;

    return 0;
}

【讨论】:

  • 垃圾。这是 O(nn)。有更好的方法。请参阅其中之一的问题 cmets。
  • 天啊,这段代码太可怕了。这对任何人都有什么帮助?
  • 我倾向于建议不要尝试像这个问题一样离题的问题,因为它也可能导致答案也被否决。另外,这里的缩进也值得改进。
猜你喜欢
  • 1970-01-01
  • 2020-07-18
  • 1970-01-01
  • 1970-01-01
  • 2013-07-06
  • 1970-01-01
  • 1970-01-01
  • 2021-05-12
  • 2011-05-27
相关资源
最近更新 更多