现在的位置: 首页 > 综合 > 正文

Find factors’ count of a Number

2019年03月11日 ⁄ 综合 ⁄ 共 1217字 ⁄ 字号 评论关闭

   这个算法的目的是求一个数因数的个数。算法原理是先求出质因数的个数。假设这个数是x。p1,p2,...pn是x的质因数。则x=p1y1*p2y2*p3y3*...*pnyn 。那么根据乘法原理,x的因数的个数就是(y1+1)*(y2+1)*...*(yn+1)。

  1. //the result is 76576500
  2. using System.Collections.Generic;
  3. using System;
  4. class Factors
  5. {
  6.     public static void Main()
  7.     {
  8.         int i=1;
  9.         int sum=0;
  10.         while (true)
  11.         {
  12.             sum+=i;
  13.             if(FactorsCount(sum)>500)
  14.             {
  15.                 Console.WriteLine(sum);
  16.                 break;
  17.             }
  18.             i++;
  19.         }
  20.     }
  21.     
  22.     public static int FactorsCount(int n)
  23.     {
  24.         Dictionary<int,int> primeFactors=new Dictionary<int,int>();
  25.         int i=2;
  26.         while(i<=n)
  27.         {
  28.             if (n % i ==0)
  29.             {
  30.                 if (primeFactors.ContainsKey(i))
  31.                 {
  32.                     primeFactors[i]++;
  33.                 }
  34.                 else
  35.                 {
  36.                     primeFactors[i]=1;
  37.                 }
  38.                 n=n / i;
  39.             }
  40.             else
  41.             {
  42.                 i++;
  43.             }
  44.         }
  45.         
  46.         int product=1;
  47.         ICollection<int> keys=primeFactors.Keys;
  48.         foreach ( int key in keys )
  49.         {
  50.             product*=(primeFactors[key]+1);         
  51.         }
  52.         return product;
  53.     }
  54. }

抱歉!评论已关闭.