目的是抛砖引玉,直接抄骗别人也是骗自己。
题目描述
已知正整数n,求最小的正整数x,使得n*x是一个平方数。例如n=12,则最小的x是3,n*x为36是一个平方数。
输入
仅一个正整数n,n < 231
输出
输出最小的正整数x。
样例输入 Copy
4
样例输出 Copy
1
#include <stdio.h>
#include <math.h>
int prime(long long a)
{
int i,j=sqrt(a+0.5),lio=1;
for(i=1;i<j;i++)
{
if(a%i==0)
{
lio=0;
break;
}
}
return lio;
}
int main()
{
long long a;
scanf("%lld",&a);
long long t=2,rere=1,j=sqrt(a+0.5);
while(prime(a)!=1&&t<=j+1)
{
while(a%(t*t)==0)
a/=t*t;
t++;
}
printf("%lld",a);
return 0;
}