Largest prime factor

题目链接:https://projecteuler.net/problem=3

题目描述:

The prime factors of 13195 are 5, 7, 13 and 29.

What is the largest prime factor of the number 600851475143 ?

题目大意:求600851475143的最大质因子

代码方法如下:

 1 #include <cstdio>
 2 #include <cmath>
 3 #include <algorithm>
 4 using namespace std;
 5 
 6 const long long maxn=600851475143;
 7 const int Max=3e6;
 8 int p[Max];
 9 
10 void pre(){  //打表求出maxn内的所有素数
11     for(int i=0;i<=Max;i++){
12         p[i]=1;
13     }
14     p[0]=p[1]=0;
15     for(int i=2;i<Max;i++){
16         if(p[i]){
17             for(int j=i+i;j<Max;j+=i){
18                 p[j]=0;
19             }
20         }
21     }
22 }
23 
24 int main(){
25     pre();
26     int a=ceil(sqrt(600851475143));
27     if((long long)a*a ==maxn &&p[a]){
28         printf("%d
",a);
29     }
30     else{
31         for(int i=a-1;i>=1;i--){
32             if(p[i] &&maxn%i==0){
33                 printf("%d
",i);
34                 break;
35             }
36         }
37     }
38 }

由于PE前面的几道题都比较,所以就不具体解释了~

看我博客的老铁如果有其他方法还请在评论下面告诉我,谢谢~

版权声明:本文允许转载,转载时请注明原博客链接,谢谢~
原文地址:https://www.cnblogs.com/Dillonh/p/8490897.html