无法运行程序
Unable to run program
,所以我试图找到相当大的数量的最大质量因素。这是关于Euler项目的问题(http://projecteuler.net/problem = 3)。我的问题是,当我进行编译和运行程序时,命令提示符空着,它只是黑色,上面没有文字。
#include <iostream>
#include <vector>
#include <math.h>
using namespace std;
vector <int> factors;
bool isPrime(int number)
{
bool prime = true;
int maxIndex=number/2;
for (int index=2; index <= maxIndex; index++)
{
if (number % index == 0)
{
prime = false;
break;
}
}
return prime;
}
int Facts()
{
float num = 600851475143;
for (double i=1000000; i<=num; i++)
{
if (fmod(num,i)==0)
factors.push_back(i);
}
}
int main()
{
Facts();
for (int i=0; i<factors.size(); i++)
{
if (isPrime(factors[i]))
cout << i << ", " ;
}
return 0;
}
我已经想到该程序可能需要很长时间,因为我要做的操作很耗时。如果是这样,是否有更快的方法可以找到这个问题的答案?我没有看到我的代码问题,但是如果其他人确实遇到问题,请随时更改它。
您的程序仅在找到结果时才能输出。它找不到任何。
600851475143的主要因素是71×839×1471×6857。在Facts
中,您仅在寻找大于1000000的因素。
是的,您的蛮力方法的训练方法比目标少,并检查它们是否是一个因素,然后检查它们是否是素数是非常慢的方法。有关更快的算法,请参见此问题。
浮子在计算中失去精度,并且不能保证具有大于1677216的整数的准确表示(可能取决于您的平台)。因此,将fmod
的结果与零与平等的结果进行比较不会很好地工作。您应该始终使用epsilon值来测试是否浮子接近另一个值。有关详细信息,请参阅比较浮点数以及每个计算机科学家对浮点的了解。
您可以改用long long
并使用整数计算。operator%
的速度可能也比fmod
快。
另外,如果您的程序确实找到了某些内容,它将仅输出结果的数组索引,我认为这不是很有用。
相关文章:
- 如何通过cpp程序运行shell脚本
- 如何在GTK程序运行时禁用屏幕保护程序/电源管理/屏幕消隐
- 在程序运行时监视 VxWorks 中的任务 CPU 利用率
- 无法在 VS Code 上使用代码运行程序运行C++文件
- 程序运行,但文件无法打开.C++中的命令行
- 终端命令在程序运行后自动打开图形
- 程序运行,但并非所有内容都显示出来
- 为什么程序运行时我的第二个循环不执行?
- 如何在 c++ 程序运行时隐藏控制台?
- 通过C++应用程序运行 shell 脚本始于 JAVA
- C++字数统计程序使用C字符串错误在程序运行后
- 我的程序运行良好,可以复制对象,但是当我使用复制分配(=)时,它仍然可以正常运行.为什么不给错误
- 如何修复数据库连接的C 程序运行时间错误(0xc0000005)
- 如何通过C++程序运行Windows命令?
- 在程序运行时更改 DLL
- 程序运行时,未读取文件
- C 是否有办法使程序运行,只要引入了新值
- CreateProcess:某些应用程序运行其他应用程序
- 使用一个 C 程序运行 python 脚本(不同的 python 版本)
- 从 WebAPI 项目运行静态类时出现 StackOverflow 异常 - 从控制台应用程序运行时工作正常