文章标题

来源:互联网 发布:mac白屏很久 编辑:程序博客网 时间:2024/04/30 11:34

第三题

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;    }}