C++ 如何为任何值编码Euler#3? /* 13195的主要因子为5、7、13和29。 数字600851475143中最大的素因子是什么? */ #包括 #包括 #包括 使用名称空间std; int main() { 无符号长数=600851475143; 无符号长i; 长双根=sqrt(num); 长双tempRoot=0; 无符号长因子=0; 无符号长最大值=0; 对于(i=2;i
您不必进行素数检查。在进行因式分解时,只需确保继续对候选对象进行除法,直到它不再对数字进行除法。在代码中执行此操作非常容易:只需将if(num%i==0)更改为C++ 如何为任何值编码Euler#3? /* 13195的主要因子为5、7、13和29。 数字600851475143中最大的素因子是什么? */ #包括 #包括 #包括 使用名称空间std; int main() { 无符号长数=600851475143; 无符号长i; 长双根=sqrt(num); 长双tempRoot=0; 无符号长因子=0; 无符号长最大值=0; 对于(i=2;i,c++,C++,您不必进行素数检查。在进行因式分解时,只需确保继续对候选对象进行除法,直到它不再对数字进行除法。在代码中执行此操作非常容易:只需将if(num%i==0)更改为while(num%i==0)实际上,600851475143也有非素数因子!例如,1234169将其除法。对于600851475143,您可能需要long而不是unsigned long。循环条件应该是i /* The prime factors of 13195 are 5, 7, 13 and 29. What is the lar
while(num%i==0)
实际上,600851475143也有非素数因子!例如,1234169将其除法。对于600851475143
,您可能需要long
而不是unsigned long
。循环条件应该是i
/*
The prime factors of 13195 are 5, 7, 13 and 29.
What is the largest prime factor of the number 600851475143 ?
*/
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int main()
{
unsigned long num = 600851475143;
unsigned long i;
long double root = sqrt(num);
long double tempRoot = 0;
unsigned long factor = 0;
unsigned long largest = 0;
for (i=2; i<root; i++)
{
if (num%i == 0)
{
num = num/i;
factor = i;
cout << factor << endl;
if (factor > largest)
{
largest = factor;
}
}
}
cout << largest << endl;
return 0;
}