zoukankan      html  css  js  c++  java
  • hdu 1299 数论 分解素因子

    题意:求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; }
  • 相关阅读:
    git
    读后感
    总结
    封装,策略,Asp换脸
    典型用户
    第四次作业
    第三次作业
    计算
    感悟
    对git的认识
  • 原文地址:https://www.cnblogs.com/zhangdashuai/p/3702214.html
Copyright © 2011-2022 走看看