质因数分解算法就是好哇,,昨晚上不会被签到题给狂虐,,头都想大了,
题意:给你一个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) ;
}
}