您的位置:首页 > 其它

hdu 1299 数论 分解素因子

2014-04-30 21:19 357 查看
题意:求1、1/x+1/y=1/z  给定z 求x,y的个数
zsd:
1: 要知道这个素数的因子的范围 范围为2——sqrt(n);
2:

带入方程得:x = n * n / k + n ;

现在就变成了求x的值。又因为n一定大于k,所以转换成求n * n的分解数;

因为n = p1 ^ e1 * p2 ^ e2 *..........*pn ^ en

sum ( n)= ( 1 + e1 ) * ( 1 +e2 ) * .........* ( 1 +en );

sum (n * n) = ( 1 + e1 ) * (1 + e2 ) *......* ( 1 + en ) ;

#include<iostream>
#include<cstring>
using namespace std;
# define N 40003
int a
;
int main()
{

int i,j;
memset(a,0,sizeof(a));
for(i=2;i<N;i++)
if(a[i]==0)
{
for(j=i+i;j<N;j+=i)
a[j]=1;
}
int t;
int n;
cin>>t;
int T=1;
for(T=1;T<=t;T++)
{

cin>>n;
int sum=1;
for(i=2;i<=N;i++)
{
if(a[i]) continue;
if(n%i!=0) continue;
if(n==1) break;
int c=0;
while(n%i==0)
{
n=n/i;
c++;
}
if(c>0)
sum*=(2*c+1);
}
if(n!=1) sum*=3;
cout<<"Scenario #"<<T<<":"<<endl;
cout<<sum/2+1<<endl<<endl;

}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: