如何生成恰好有七个因数的数字?

3

为了一份作业,我需要找到从1到1000之间恰好有七个因数的数字序列的逻辑。

(理想情况下,该代码可以轻松修改以生成质数。)


1
考虑一个起点,要得到奇数个因子,它必须是一个完全平方数。 - Jerry Coffin
@Gabe:根据我的了解,除非明确排除,否则它总是被计算在内。 - liori
4个回答

9

取一个质数p,计算p^6。它唯一的因数将是:1pp^2p^3,...,p^6


int sevendivis(){ return 22222*2; } 函数 sevendivis() 返回 2的6次方。 - Jeffrey Greenham

7
一个因数分解为
n = product(p_i ^ k_i)

将会拥有。
d = product(k_i + 1)
维基百科中的约数函数)。这表明n只能有一个质因数,而且这个质因数必须被提高到6次方。因此,取任意质数的六次方。

2
逻辑上,这个数字应该既是完全平方数又是完全立方数。
您必须知道一个数字的质因数分解形式为N=N1^a * N2^b;其中N1和N2是质数,有a*b个因子或除数。
因此,对于7个因子的数字,必须是N=a^6的形式,其中a是一个质数。
例如:2^6(64),3^6(729)。
编辑:根据这个逻辑,生成数字会更容易快速。您可以轻松地生成小于1000的完全平方数和完全立方数,并检查两个列表中的公共数字。

1
你需要使用循环(for循环),从 for n = 1 to 1000 开始,然后在此循环中再嵌套一个循环 for m = 1 to n 。在此内部循环中测试是否 n / m = 整数(没有余数),如果是,则增加div计数器。 在第二个循环结束时,检查div计数器是否为7,如果是,请将数字写入屏幕上。

编辑:对于质数,div计数器必须为2!


1
+1 是因为它也可以轻松修改以生成质数。 - anatolyg
@liori:只是一个简单的暴力算法。虽然可以改进它,但为什么要针对只有1000个数字呢? - GJ.
1
对于1000个数字,你应该注意到1000^(1/6)只比3略大。这意味着小于1000的仅有7个因子的数字只能是2^6和3^6。你需要多少时间来输入你的算法? - liori
@liori:同意,但这是一道作业题,他需要一个可以轻松修改以生成质数的逻辑。那么呢? - GJ.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接