C++ 如何生成正好有七个除数的数?
对于家庭作业,我需要逻辑来找到一系列从1到1000的数字,这些数字正好有七个除数C++ 如何生成正好有七个除数的数?,c++,algorithm,prime-factoring,C++,Algorithm,Prime Factoring,对于家庭作业,我需要逻辑来找到一系列从1到1000的数字,这些数字正好有七个除数 (理想情况下,代码可以很容易地修改以生成素数。)获取素数p。计算p^6。它唯一的除数是:1,p,p^2,p^3,…,p^6,一个带因式分解的数字 n = product(p_i ^ k_i) 将有 d = product(k_i + 1) 除数(参见)。这表明n可能只有一个素数因子,并且该素数因子必须提高到6的幂次方。以任意素数的六次方为例。逻辑将是该数将同时是完美平方和完美立方。 你必须知道一个素数形式为N=
(理想情况下,代码可以很容易地修改以生成素数。)获取素数
p
。计算p^6
。它唯一的除数是:1
,p
,p^2
,p^3
,…,p^6
,一个带因式分解的数字
n = product(p_i ^ k_i)
将有
d = product(k_i + 1)
除数(参见)。这表明
n
可能只有一个素数因子,并且该素数因子必须提高到6的幂次方。以任意素数的六次方为例。逻辑将是该数将同时是完美平方和完美立方。
你必须知道一个素数形式为N=N1^a*N2^b的数;
其中N1和N2是素数,有a*b因子或除数
因此,对于7个因子,数字的形式必须是N=a^6,其中a是素数
例如2^6(64),3^6(729)
编辑:使用此逻辑,快速生成数字将非常容易。您可以轻松生成完美的正方形和完美的立方体对于n=1到1000,您需要从循环(对于循环)到,对于m=1到n,在该循环内另一个循环如果n/m=integer(无余数),则在该循环内测试
如果是,则增加div计数器。
在第二个循环结束时,检查div计数器是否为7,如果是,则在屏幕上写入数字
编辑:对于素数,div计数器必须为2 >要考虑的一个起始点是要得到奇数个除数,它必须是一个完美的平方。@ Gabe:从我所知道的,除非被明确排除,否则它总是被计数的。+ 1,因为它也可以很容易地被修改来生成素数。numbers@liori:只是一个简单的暴力算法。改进它是可能的,但是为什么只有1000个数字呢?对于1000个数字,你应该注意到1000^(1/6)只比3多一点。这意味着只有小于1000且有7个除数的数字可以是2^6和3^6。你需要多少时间来输入你的算法?@liori:同意,但这是家庭作业,他需要的逻辑可以很容易地修改以生成素数。所以?int sevendivis(){返回2*2*2*2*2*2;}