c++ - 最大质因数 - C++

标签 c++ prime-factoring

我试图找到数字 600851475143 的最大质因数。我的代码适用于我测试的较小数字(低于 100)。然而,当遇到 600851475143 时,它返回 4370432,绝对不是质数。知道我的代码可能有什么问题吗?

#include <iostream>
#include <time.h>
#include <math.h>

using namespace std;

int main()
{

int num;
int largest;
int count;

cout<<"Please enter a number to have its Largest Prime Factor found"<<endl;
cin>>num;
num = 600851475143;

for (int factor = 1; factor <= num; factor++)
{
    if (num % factor == 0)
    {
        count = 0;
        for (int primetest=2; count == 0 && factor > primetest ; primetest++) 
        {
            if (factor % primetest == 0)
            count ++;    
            //endif
        }
        if (count == 0)
        largest = factor;
        //endif
    }       

}//endif
cout<<largest<<endl;
system("PAUSE");
}

最佳答案

num = 600851475143;

此处发生整数溢出。 num 的大小不足以包含您提供的值。

使用uint64_t

#include <cstdint>  //must include this!

uint64_t num = 600851475143;

读这个:cstdint

关于c++ - 最大质因数 - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7062442/

相关文章:

c++ - 在 C++ 中使用 -o 和 -c 的 Makefile 语法

java - 在 JOptionPane 输出上一行打印 10 组素数

c++ - 蛮力,单线程素数分解

list - 最大的质因数 Python

用于查找素因数的 C 程序,编译不会停止

c - 为什么它显示主要因子的输出错误?

c++ - 一段代码不能被intel编译器编译但是clang会编译它

c++ - 使用 SolvePnP 的 OpenCV 断言失败

c++ - 如何从 C++ 中的字符串中提取子字符串?

c++ - 将字符串从 getline 转换为数字