69,370
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <math.h>
typedef long long int64;
int main()
{
int64 n = 600851475143LL;
int64 i;
for (i = n; i >= 2; i--)
{
int flag = 1;
if (n % i == 0) // 如果i是n的因数
{
int j;
for (j = 2; j <= sqrt(i); j++)
if (i % j == 0) // 判断是否不是质数
flag = 0;
if (flag == 1) // 如果是质数
{
printf("%d", i);
break;
}
}
}
return 0;
}
typedef long long int64;
int64 n = 60081475143LL;
for (int64 i = 2; ; ++i)
{
if (i * i > n) break;
while (n % i == 0) n /= i, @1;
}
if (n != 1) @2;
@1中的i和@2中的n较大的为所求。