c++ - main() 不执行,但编译

标签 c++ compilation runtime

我有这个简单的程序:

// Include libraries

#include <iostream>
#include <string>
#include <vector>

using namespace std;

// Include locals

// Start

#define NUMBER 600851475143

int main(int argc, const char* argv[])
{
    long long int ans = 0;
    long long int num = NUMBER;

    vector<int> factors;

    do
    {
        // Get lowest factor

        for (int i = 1; i <= num; ++i)
        {
            if (!(num % i))
            {
                factors.push_back(i);

                num /= i;
                break;
            }
        }
    } while (num > 1);

    cout << "Calculated to 1.\n";

    int highestFactor = numeric_limits<int>::min();

    for (int i = 0; i < factors.size(); ++i)
    {
        if (factors[i] > highestFactor)
        {
            highestFactor = factors[i];
        }
    }

    ans = highestFactor;

    cout << ans << endl;

    return EXIT_SUCCESS;
}

g++ -O2 -c -o prob3.o prob3.cpp 编译被证明是成功的,但是当我运行它时我什么也没看到,它一直在运行,我不得不按 Ctrl-C(强制-kill) 最后。当我尝试添加时

int main(int argc, const char* argv[])
{
    cout << "Test\n";

对于程序,Test 也没有被打印出来。就像我的程序根本没有执行。

如有任何帮助或建议,我们将不胜感激!

解决方案

我忘记了素数是从 2 开始的。将 for (int i = 1 更改为 for (int i = 2

最佳答案

那些嵌套循环将永远循环下去。由于 break,内部 for 循环只会执行一次,所以它只会执行 num/= 1。这意味着 num 永远不会减少,因此 num > 1 永远不会为假。我想你只需要再等一会儿!

您没有看到“测试”的原因可能是因为您没有刷新输出。尝试:

std::cout << "Test" << std::endl;

关于c++ - main() 不执行,但编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13975231/

相关文章:

c++ - 如何区分 C++ 中的高性能和低性能内核/线程?

c++ - CopyMemory 复制比 VirtualAlloc 分配更多的字节怎么办

CodeLite 构建选项未突出显示 : can't compile and test code (Ubuntu 11. 10)

java - 为什么在 Java 中使用管道执行系统命令会在没有空格的情况下失败?

C# 在运行时使用字符串创建表达式

java - 如何将系统属性值传递给 processBuilder?

c++ - 静态数据成员初始化

c# - 构建整个解决方案,但只为一个项目添加全局条件编译符号

使用 makefile 编译 C 项目

c++ - OpenCL clEnqueueTasks 并行性