Re: [VB6 ] Q10083: Division
※ 引述《gofin (雲色)》之銘言:
: → tomas0011:如果 分子除分母為整數也就是整除!分母則為分子的因數 11/25 22:57
: → tomas0011:問題就來了!要如何把分母(大數)分割 成較小的因數 11/25 22:58
: → tomas0011:而每次除分母因數時判斷分子是否變為小數 即為不整除^^? 11/25 22:59
: → tomas0011:可是若途中遇到了超過可以用 "除法直接除的(分母)質數" 11/25 23:01
: → tomas0011:題目又會產生bug囉 !! 好難ˊˋˊˋˊˋˊˋ 11/25 23:01
: 續之前t^(a-b)找出可能的值
: 再把這些值丟進(t^a)-1/(t^b)-1
: 分別算出分子跟分母的數字(這裡可能需要大數相乘)
: 如果說有個函數是可以分解一個數字的因式
: EX:輸入25會輸出5^2 或輸入75會輸出5^2*3^1
: 這樣就把分子跟分母切開送進去.....
: 然後先比較
: if 分子的底數是否包含全部分母的底數
: if 這些相同底數的分子指數都大於分母指數
: 如果有的話(應該就會整除) 就算一算輸出答案
: (怎算就是 假設a,b都是分子跟分母都有的底數,c^e,d^f是分子多的
: =a^(分子指數減分母指數)*b^(分子指數減分母指數)*c^e*d^f
: P.S到這其實只是一串底數跟指數的組合,如果需要輸出確切的數字就用大數
: 相乘算出來吧,,,,但是我倒覺得算到這邊應該就差不多了!
: else
: 分子指數減分母指數會等於負的
: =沒辦法整除
: end if
: else
: =沒辦法整除
: end if
: 參考看看
用這個方法可能會牽扯到大數的因數分解
如果分解出來的那個數值又是大數(也就是無法在分割的質數)
又會碰上了相乘的問題
我想到了一個解法
(t^a-1)/(t^b-1)=答案
如果用交差相乘 則 (t^a-1)=(t^b-1)*答案
可能會變成單純的大數相乘 至於範圍
假設(t^a-1)長度為10
(t^b-1)長度為5
以最壞最壞的打算 假設
t^a-1=1000000000
t^b-1=10000
那迴圈的範圍就會落在長度6 長度7之間
也就是 100000-1000000 也許可能有bug
或是個增加一個範圍 長度5到8之間
至於判斷答案*(t^b-1) 是否為(t^a-1)
則可以用 t=split(t^b-1*答案,t^a-1)
若 ubound(t)=1 而且 t(0) and t(1) =empty
那答案為正解 若 迴圈跑完 還找不到答案
則為小數點
嗯!!可能效率還是很差
謝謝你讓我想到一個或許可行的解法~
------------分割限-----------------
來了
就我所說的發展一個可行的
用相乘and相減 找個位數 這三個重點
破解一組答案
先新增一個空白s=""
(這是一組小算盤可以計算的數字)
假設 t^a-1=304696744428557889118768=a
t^b-1=4654954984844849=b
兩個相除的結果=65456432=c
至於怎麼推到答案 a/b = c = 65456432
首先 看尾數
b的尾數=9 9*多少=a的尾數8 對乘2=18
把a-b整項*2
304696744428557889118768
- 4654954984844849*2
-------------------------
304696735118647919429070
因為已經求到一位 2 所以把 0消掉(消掉一位)
304696735118647919429070/10
此時 a =30469673511864791942907
s= 2 & s
繼續
b的尾數=9 9*多少=a的尾數7 對乘3=27
把a-b整項*3
30469673511864791942907
- 4654954984844849*3
------------------------
30469659546999837408360
求到一位 3 所以把 0 消掉
a又變成了 3046965954699983740836
此時 s= 3 & s
s 內容 = 32
以此類推
最後結果可以推到65456432
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.130.37.170
→
11/26 13:06, , 1F
11/26 13:06, 1F
→
11/26 13:06, , 2F
11/26 13:06, 2F
推
11/26 13:53, , 3F
11/26 13:53, 3F
→
11/26 13:54, , 4F
11/26 13:54, 4F
→
11/26 13:58, , 5F
11/26 13:58, 5F
→
11/26 14:00, , 6F
11/26 14:00, 6F
→
11/26 15:25, , 7F
11/26 15:25, 7F
※ 編輯: tomas0011 來自: 140.130.37.170 (11/26 15:47)
※ 編輯: tomas0011 來自: 140.130.37.170 (11/26 15:53)
推
11/26 16:41, , 8F
11/26 16:41, 8F
→
11/26 16:46, , 9F
11/26 16:46, 9F
→
11/26 16:47, , 10F
11/26 16:47, 10F
→
11/26 16:57, , 11F
11/26 16:57, 11F
→
11/26 16:58, , 12F
11/26 16:58, 12F
→
11/26 16:58, , 13F
11/26 16:58, 13F
→
11/26 16:59, , 14F
11/26 16:59, 14F
推
11/27 00:21, , 15F
11/27 00:21, 15F
→
11/27 00:28, , 16F
11/27 00:28, 16F
推
11/27 10:13, , 17F
11/27 10:13, 17F
→
11/27 10:15, , 18F
11/27 10:15, 18F
→
11/27 10:16, , 19F
11/27 10:16, 19F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 4 篇):