素因子:
先令x为最小质数2,
①:如果x=n,则分解完成,
②:若n!=x,且n能被x整除,n=n/x,
③:若不能除尽,x++,再从头循环
去重:
是他的素因数就置为1,否则为0
最后将为1的乘起来
#include <iostream>
#include<cstring>
using namespace std;
int main()
{
int n,x,s[1000];
memset(s,0,sizeof(s));
int result=1;
scanf("%d",&n);
if(n==2)
printf("2");
else{
for(x=2;x<=n;){
if(x==n){
s[x]=1;
break;
}
else{
if(n%x==0){
s[x]=1;
n/=x;
}
else x++;
}
}
for(int j=2;j<=n;j++){
if(s[j]==1)
result*=j;
}
printf("%d",result);
}
return 0;
}