24h購物| | PChome| 登入
2009-09-08 16:24:23| 人氣420| 回應0 | 上一篇 | 下一篇

KILL ME (KM)

推薦 0 收藏 0 轉貼0 訂閱站台

作法 : 建表

這個數列似乎陡降的很快

10萬以內 L<=7

/**********************************************************/

#include<stdio.h>  
#include<stdlib.h>  
#include<math.h>  
int Prime[5200]={0},p; 
char pp[100001]={0};
int prime()  
{  
 int a,b,m=0;  
 for(a=2;a<=317;a++)     
      if(pp[a]==0)     
        {     
           Prime[m]=a;     
           m++;     
           for(b=2;a*b<=100000;b++)     
             pp[a*b]=1;     
        }  
   return m;  
}  
int Divisors (int num)
{
   if(pp[num]==0) return 2;
   int a,b,C=1;
   for(a=0;a<p&&Prime[a]<=sqrt(num)&&num!=1;a++)
      {
        int time=0;
        if(num%Prime[a]==0)
          {
             while(num%Prime[a]==0)
                {
                   num/=Prime[a];
                   time++;
                }
             C*=(time+1);
          }
      }
    if(num!=1)
      C*=2;
    return C;
}
main()  
{  
 p=prime(); 
 int KILL[100001]={0};
 int n,a; 
 for(a=2;a<=100000;a++)
    KILL[a]=Divisors (a);
 /* freopen("input.txt", "rt", stdin);
  freopen("output.txt", "w+t", stdout);*/
  while(scanf("%d",&n)==1)
    {
       int L=1;
       printf("%d",n);
       while(n!=2)
          {
             n=KILL[n];
             printf("->%d",n);
             L++;
          }
          printf("\nL=%d\n",L);
    }
 return 0;     
}  

台長: 來源不明

您可能對以下文章有興趣

人氣(420) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 數位資訊(科技、網路、通訊、家電) | 個人分類: ZeroJudge 基礎+原創題庫 |
此分類下一篇:SQRT
此分類上一篇:五則運算 (無須轉後序版)

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文