题目描述
输入一个数,输出这个数的质因中位数。定义:质因中位数是所有质因数(N次方则有N个)的中位数。如660=2*2*3*5*11,
660的质因中位数为3。
660的质因中位数为3。
输入
多组数据每行一个正整数(小于10^5,大于1),不超过1000组。
输出
每行一个整数(四舍五入)。
样例输入
660
样例输出
3
提示
每行一个整数。
AC代码:
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int main()
{
int i,n,b;
int a[100];
while(~scanf("%d",&n)){
b=0;
for(i=2;i<=n;i++)
while(n%i==0){
n/=i;
a[b++]=i;
}
if(b%2==0){
i=(a[b/2-1]+a[b/2]);
if(i%2==0) printf("%d\n",i/2);
else printf("%d\n",(i+1)/2);
}
else cout<<a[b/2]<<endl;
}
}