题意:求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[N];
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;
}
hdu 1299 数论 分解素因子,码迷,mamicode.com