【发布时间】:2014-01-09 18:45:56
【问题描述】:
你能帮帮我吗?
我是 C 初学者,但我的代码不起作用。
我正在尝试确定 600851475143 的最大素数,当我运行代码时,它什么也不做。但是尝试使用较小的数字会起作用。
long i;
for (i = 600851475143; i > 1; i--)
{
if (600851475143 % i == 0)
{
printf("%d\n", i);
}
};
【问题讨论】:
-
什么都不做?还是只需要 非常长的时间 来完成
for循环?如果我阅读正确,它不会在循环进行到一半之前打印第一行,对吧? -
Stack Overflow 上有很多类似的问题:google.com/#q=site:stackoverflow.com+c+prime+factor
-
它是不起作用还是需要很长时间才能完成?这是一个非常大的数字
-
不要从数字本身开始循环,从该数字的一半开始,它会减少时间但不会改变结果
-
如果它是一个 32 位处理器,那么这个数字 (
600851475143) 是一个溢出,它很可能是负数并且未通过i > 1测试。试试long long i;。
标签: c for-loop factorization