本帖最后由 wp231957 于 2021-3-18 09:50 编辑
试试这个代码 如何#include<stdio.h>
#include<math.h>
typedef enum {true=1,false=0}bool;
bool isfrime(long long s)
{
if (s == 1 || s<=0)
return false;
else if (s == 2)
return true;
else
{
for (int i = 2; i <= sqrt(s); i++)
{
if (s%i == 0)
return false;
}
return true;
}
}
int main()
{
long long num=600851475143;
long long oldnum=num;
long long i=2;
while(i<num)
{
if (isfrime(i)==true && (num % i==0))
{
num/=i;
i=2;
}
else
{
i++;
}
}
printf("%lld的最大质因数是 %lld\n",oldnum,num);
return 0;
}
|