#5273: 可以提供一下其他想法嗎?


popular10347 (ICPC// 哪時能唸到高等演算法T^T)

學校 : 元智大學
編號 : 11351
來源 : [1.169.118.99]
最後登入時間 :
2012-10-29 00:22:54
d419. 00884 - Factorial Factors -- UVa884 | From: [125.231.160.224] | 發表日期 : 2011-07-02 12:41

這題好不容易寫出來(( 汗

 一開始我就把2~1000000的質數找出來

我把求出來的質數放在一個prime_record的陣列裡,再開出1000001個陣列(prime)來判斷此數是否為質數 

再來2~1000000一個一個求出他的質因數

一直去除prime_record裡的質數,直到那一個數(temp)變程式一個質數,且大於1

int count_factors[1000001];
int count=0;
     for(int i=2;i<=1000000;i++)
    {
         int temp=i;
         int j=0;
         while(temp>1)
        {
             if(prime[temp])
            {
                    count++;
                    break;
            }
           if(temp%prime_record[j] == 0)
          {
                    temp/=prime_record[j];
                    count++;
          }
          else
               j++;
        }
  
          count_factors[i]=count;
    }

想請教一下有其他比較好的方法嗎?

可以提供一下嗎?! 謝謝!!

 

 
#16599: Re:可以提供一下其他想法嗎?


hshua (hshua)

學校 : 新北市立林口高級中學
編號 : 52506
來源 : [125.228.147.181]
最後登入時間 :
2024-05-17 16:41:02
d419. 00884 - Factorial Factors -- UVa884 | From: [220.133.124.236] | 發表日期 : 2019-01-20 14:08

這題好不容易寫出來(( 汗

 一開始我就把2~1000000的質數找出來

我把求出來的質數放在一個prime_record的陣列裡,再開出1000001個陣列(prime)來判斷此數是否為質數 

再來2~1000000一個一個求出他的質因數

一直去除prime_record裡的質數,直到那一個數(temp)變程式一個質數,且大於1

int count_factors[1000001];
int count=0;
     for(int i=2;i<=1000000;i++)
    {
         int temp=i;
         int j=0;
         while(temp>1)
        {
             if(prime[temp])
            {
                    count++;
                    break;
            }
           if(temp%prime_record[j] == 0)
          {
                    temp/=prime_record[j];
                    count++;
          }
          else
               j++;
        }
  
          count_factors[i]=count;
    }

想請教一下有其他比較好的方法嗎?

可以提供一下嗎?! 謝謝!!

 


用動態歸納法 DP

 
ZeroJudge Forum