该程序计算所有因素。通过首先找到所有素因子并将1加到它们的指数然后将它们相乘。但是在for循环中,i在每次迭代中都会增加2。这是错误的,因为在7之后它会增加到9而不是素数? 还是我错了?任何人都可以解释一下!
setInveral
答案 0 :(得分:1)
while(n%i==0)
{
exponen++;
n=n/i;
}
该循环从i
删除(并计算)所有n
个因子,直到没有剩余。
因此,当您到达9
时,您已经删除了3
的所有权力,因此此时9
永远不会将n
分开:算法有效
注意:这个方法不是最有效的方法,循环使用Erathostenes筛子生成的实际素数列表可以加快速度,因为没有测试每个奇数,只有素数(循环不能但是很容易避免)
答案 1 :(得分:0)
我不确定它是计算还是数学。
但如果i
是复合的,它将永远不会除以n
的当前值。
这是因为复合数i
的所有素数因子已经被访问过并且被n
“分开”。
9是一个特例。任何3的因子都已被划分,因此n%i==0
在i
达到9时永远不会成立。
同样,当它达到15时,3和5的因子被分开,n%15==0
将是假的。