全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1417
推到 Plurk!
推到 Facebook!

如何列出一個數的全部質因數?

尚未結案
metals753
一般會員


發表:7
回覆:3
積分:2
註冊:2005-05-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-12-11 13:37:53 IP:218.168.xxx.xxx 未訂閱
數入一個數,程式會將此數的所有質因數列出,數入0為跳出 範圍是1~1000000 可是我的程式只要輸入大一點的數字就會錯誤,如885387 請問各位程式哪邊有錯誤? 謝謝! 
#include    void main()
{
        int ip,i,j,p,t[100],m=0,all;
        
        for(i=2;i<120;i  )
        {
                all=0;
                p=i;
                for(j=2;j<=i;j  )
                {
                        if(i%j==0)all  ;
                }
        if(all==1)
                {
                        t[m]=p;
                        t[m 1]='\0';
                        m  ;
                }
        }
        //for(m=0;t[m]!='\0';m  )printf("%d ",t[m]);
//===================================================================            while(scanf("%d",&ip))
        {
                if(ip==0)break;
            m=0;
            while(ip/t[m]!=1&&t[m]!='\0')
                {
                        if(ip%t[m]==0)
                        {
                                printf("%d ",t[m]);
                            ip=ip/t[m];
                            m=0;
                        }
                        m  ;
                }
                printf("%d\n",ip);
        }
}
 
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-12-11 14:49:14 IP:140.118.xxx.xxx 未訂閱
應該是int的問題...你可以改成double試試看..我也忘了double的範圍在哪了,所以不是很確定1000000會不會overflow... 還有,你的程式有點怪怪的,他並不會列出所有的質因數....for loop有問題
metals753
一般會員


發表:7
回覆:3
積分:2
註冊:2005-05-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-12-11 17:45:33 IP:218.167.xxx.xxx 未訂閱
引言: 應該是int的問題...你可以改成double試試看..我也忘了double的範圍在哪了,所以不是很確定1000000會不會overflow... 還有,你的程式有點怪怪的,他並不會列出所有的質因數....for loop有問題
改用double程式會有10個錯耶@@a
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-12-11 20:00:05 IP:211.22.xxx.xxx 未訂閱
#include
#include    void main()
{
 unsigned int ip,i,j,p,t[100],m=0,all;
 memset(t,0,sizeof(t));        
 for(i=2;i<120;i  )
 {
  all=0;
  p=i;
  for(j=2;j<=i;j  )
  {
   if(i%j==0)all  ;
  }
  if(all==1)
  {
   t[m]=p;
   t[m 1]='\0';
   m  ;
  }
 }
 //for(m=0;t[m]!='\0';m  )printf("%d ",t[m]);
//===================================================================
 while(scanf("%d",&ip))
 {
  if(ip==0)break;
  m=0;
  while( t[m] != 0 && ip/t[m]!=1 )
  {
   if(ip%t[m]==0)
   {
    printf("%d ",t[m]);
    ip=ip/t[m];
    m=0;
   }
   m  ;
  }
  printf("%d\n",ip);
 }
}
----------------------- Practice makes perfect.
系統時間:2024-04-28 13:34:16
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!