第三题
Largest prime factor
我的做法,从后面开始找是不是因数,然后判断是不是素数
bool prime(long long n)
{
long long i;
for(i = 2; i <= sqrt(n); i++)
{
if(n % i == 0)
return 0;
else
continue;
}
return 1;
}
int example3()
{
long long n = 600851475143;
//scanf("%d", &n);
long long k = sqrt(n);
long long i;
long long a[100000];
long long num = 0;
for( i = k; i >= 100; i--)
{
if(n % i == 0)
{
if(prime(i))
{
printf("%lld\n", i);
break;
}
}
else
continue;
}
}
胡船长的做法,用NUM /= i 把自己除到最后使NUM 和 I 为互质的数,并且保存质数I
void example3q() // 这个NUM 除了若干次后,
{
int64_t num = 600851475143LL;
int64_t max = 0;
int64_t i;
for(i = 2; i * i <= num; i++)
{
if(num % i == 0)
{
while(num % i == 0)
{
num /= i;
}
max = i;
}
if(num != 1)
max = num;
}
}
本文介绍了两种不同的算法实现方式来寻找一个特定数值的最大质因数。一种是从数值的平方根向下查找并验证质数的方法;另一种是通过不断除以找到的因数,直至无法再除为止,从而得到最大质因数。
2912

被折叠的 条评论
为什么被折叠?



