【问题标题】:Project Euler c++ # 3欧拉项目 C++ # 3
【发布时间】:2014-02-24 11:49:34
【问题描述】:

问题:

"13195 的质因数是 5、7、13 和 29。

600851475143 的最大质因数是多少?"

#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
long double x=600851475143,n;
for(n=2;;n++)
    {redo:if(fmod(x,n) == 0)
                { x=x/n;
                  goto redo;
                }
if(x == 1)
    {
    cout<<n
    break;
        }
}
getch();
}

我尝试在不使用蛮力的情况下解决它,但我的输出始终为 688543。 我没能找到故障。 请帮忙。 谢谢。

【问题讨论】:

  • for - goto/label 的用法让我哭了
  • 你的缩进是....有创意的....至少可以这么说。加上不存在的标题,main 的错误返回类型,goto 控制for 流,getch().... 我可以继续。

标签: c++


【解决方案1】:

这是你的代码,翻译成实际 C++(我没有改变它的语义):

#include <iostream>
#include <cmath>

int main()
{
    long double x = 600851475143;
    long double n = 2;

    while (x > 1) {
        if (fmod(x,n) == 0)
            x /= n;
        else
            n++;
    }

    std::cout << n << '\n';
}

The result is: 6857

你的算法没问题。你的编译器非常坏了,你在 16 位系统上工作,或者你犯了一些你没有犯的错误给我们看看。

【讨论】:

    猜你喜欢
    • 2017-05-10
    • 2017-07-20
    • 2014-03-08
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多