iT邦幫忙

0

python數學問題

  • 分享至 

  • xImage

「若已知2520可以被2~10的整數整除,請使用程式找出一個最小數字,該數字可以被2~20整除」

請問這有甚麼好的python程式寫法? 謝謝指教!

ccutmis iT邦高手 2 級 ‧ 2021-01-14 17:43:02 檢舉
https://www.itread01.com/content/1544695924.html
a31916909 iT邦新手 5 級 ‧ 2021-09-03 19:19:20 檢舉
2 -> 16
3 -> 9
5 -> 5
7 -> 7
11 -> 11
13 -> 13
17 -> 17
19 -> 19
你要的數字應該是16*9*5*7*11*13*17*19
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
海綿寶寶
iT邦大神 1 級 ‧ 2021-01-14 20:07:11
最佳解答

Google 到的
答案在最後面

0
Alien
iT邦新手 4 級 ‧ 2021-01-14 19:50:07

給你一超低效能程式碼
如果你願意等到天荒地老的話
下面這個可以用
/images/emoticon/emoticon15.gif

num = int(input())
num1 = 1
a = 'num1 % 2 == 0'
for i in range(3, num + 1):
    b = (f' and num1 % {i} == 0')
    a = a + b
while True:
    num1 += 1 
    if eval(a):
        break
print('最小數字:', num1)
10
最小數字: 2520

搭車時突然想到的
就順便打一下
正常版土法煉鋼
效能正常
兩迴圈解決

num = int(input())
num1 = 2
a = 'num1 % 2 == 0'

for i in range(3, num + 1):
    b = (f' and num1 % {i} == 0')
    a = a + b
    num1 *= i

for i in range(num, 1, -1):
    while True:
        num1 = num1 / i
        if not eval(a):
            num1 *= i
            break

print('最小數字:', int(num1))
Alien iT邦新手 4 級 ‧ 2021-01-14 20:44:49 檢舉

前面有人問的質因數
拿來用

num = int(input())

def prime_factoring(n):
    divisor = 2
    factors = []
    while divisor * divisor <= n:
        if n % divisor:
            divisor += 1
        else:
            n //= divisor
            factors.append(divisor)
    if n > 1:
        factors.append(n)
    #利用set不重覆的特性取得質數種類
    tmp_set=set(ii for ii in factors)
    final=[]
    for jj in tmp_set:
        #利用list.count()函式取得加總結果
        final.append([jj,factors.count(jj)])
    return final


c = {}
for i in range(2, num + 1):
    b = prime_factoring(i)
    for j in range(len(b)):
        if b[j][0] not in c:            
            c[b[j][0]] = b[j][1]
        elif b[j][1] > c[b[j][0]]:
            c[b[j][0]] = b[j][1]
k = 1
for i in c:
    k *= i ** c[i]
k

我要發表回答

立即登入回答