質因數分解算法就是好哇,,昨晚上不會被簽到題給狂虐,,頭都想大了,
題意:給你一個1e9範圍的數,求一個最大的質數,使得該數能被這個質數整除
思路:求一個數的最大質因數
#include <iostream>
#include <cstdio>
using namespace std ;
int main(){
int n ;
while(scanf("%d",&n)==1) {
if(n <= 1) {
printf("0\n");
continue ;
}
int tmp = n ;
for(int i = 2 ; i*i <= n ; ++i) {//i<=sqrt(n) 如果是i<=n 就會TLE
while(i != n) {
if(n%i) break ;
n/=i ;
}
}
if(n == tmp) printf("1\n");
else printf("%d\n" , tmp/n) ;
}
}