思路:质因子累乘的值即为所求#include<iostream> #include<algorithm> #include<stdio.h> #include<math.h> #include<string.h> #include<stdlib.h> using namespace std; typedef long long LL; int prime(LL n); int main() { LL n,ans,m; while(~scanf("%lld",&n)) { /*for(int i=2;i<n;i++) { if(n%i==0) printf("%d ",i); }*/ ans=1; if(prime(n)|| n==1) ans=n; else { int len=sqrt(n); for(int i=2; i<=len; i++) { m=n/i; if(n%i==0 && prime(i)) ans*=i; if(m!=i && m*i==n && prime(m)) ans*=m; } } printf("%lld\n",ans); } return 0; } int prime(LL n) { if(n==1) return 0; for(int i=2; i<=sqrt(n); i++) { if(n%i == 0) return 0; } return 1; }
时间: 2024-10-26 09:53:28