趣味百題之趣味猜想

2021-07-25 09:23:31 字數 3189 閱讀 1295

# -*- coding: utf-8 -*-

import sys

reload(sys)

sys.setdefaultencoding("utf-8")

"""created on wed dec 07 18:43:25 2016

趣味百題之趣味猜想

@author: onlyyo

"""# 1.

'''角谷猜想的內容為:任意給定乙個自然數,若它為偶數則除以2,

若它為奇術則乘3加1,得到乙個新的自然數。按照這樣的計算方法計算下去,

若干次後得到的結果必然為1。編寫程式對角谷猜想的正確性加以驗證。

'''def fun1(n):

while true:

if n%2 == 0:

n = n/2

else:

n = 3*n + 1

if n==1:

return 1

break

# print fun1(10)

# 2.

'''「回文數」是一種數字。如:98789,這個數字正讀是98789,倒讀也是98789,

正讀倒讀一樣,所以這個數字就是回文數。程式設計判斷乙個數是否是回文數。

'''def fun2(n):

a =

while n:

n /= 10

for i in xrange(len(a)):

if a[i] != a[-i-1]:

break

else:

print '回文數'

return true

print '非回文數'

return false

# fun2(78987)

# 3.

'''任意乙個不是用完全相同數字組成的四位數,如果對它們的每位數字重新排序,

組成乙個較大的數和乙個較小的數,然後用較大的數減去較小數,不夠四位數時補零,

類推下去,最後將變成乙個固定的數:6174,這就是卡布列克常數。'''

def fun3(n):

if n == 6174:

print "是乙個布列克常數!".format(n)

while true:

lista = list(str(n))

lista.sort()

max = int(lista[3])*1000 + int(lista[2])*100 + int(lista[1])*10 + int(lista[0])

min = int(lista[0])*1000 + int(lista[1])*100 + int(lista[2])*10 + int(lista[3])

n = max - min

if n < 1000:

n = n*10

if n == 6174:

print "是乙個布列克常數!".format(n)

break

#fun3(4321)

#4.'''「今有物不知其數,三三數之乘二,五五數之乘三,七七數之乘二,問物幾何?」

按照今天的話來說:乙個數除以3餘2,除以5餘3,除以7餘2。 '''

def fun4():

n = 1

while true:

if n % 3 == 2:

if n % 5 == 3:

if n % 7 == 2:

print n

break

else:

n += 1

continue

else:

n += 1

continue

else:

n += 1

continue

fun4()

# 5.

'''驗證尼克斯徹定理,即任何乙個整數的立方都可以寫成一串連續奇數的和,如下所示:

1³ =1

2³=3+5

3³=7+9+11

4³=13+15+17+19

......'''

def fun5(n):

z = n**3

a = n**2 - n + 1

temp =

for i in xrange(n):

if sum(temp) == z:

return temp

print temp

#l = fun5(6)

#6.'''西洋棋的棋盤有8行8列共64個單元格,無論將馬放於棋盤的哪個單元格,都可讓馬踏遍棋盤的

每個單元格。問馬應該怎麼走才可以踏遍棋盤的每個單元格?'''

# 遍歷64個格仔,--------------不太懂

l = 8

m = [0] * (l * l)

def allentry(x, y, m):

t = [(x + i, y + k * 2 / i) for i in (-1, 1, -2, 2) for k in (-1, 1)]

return [(ex, ey) for ex, ey in t if -1 < ex < l and -1 < ey < l and m[l * ex + ey] == 0]

def sortedentrylist(x, y, m):

a = [8]

res =

for ex, ey in allentry(x, y, m):

c = len(allentry(ex, ey, m))

for i, t in enumerate(a):

if c <= t: break

a.insert(i, c)

res.insert(i, (ex, ey))

return res

def show(m):

print 'show:'

for i in xrange(l):

print m[i * l:i * l + l]

print

def move(x, y, m, n):

m[l * x + y] = n

if n == l * l:

show(m)

return

for ex, ey in sortedentrylist(x, y, m):

move(ex, ey, m[:], n + 1)

move(0, 0, m, 1)

python趣味題 python 趣味百題3

等差素數數列 類似7 37 67 97 107 137 167 197這樣由素數組成的數列。素數數列具有項數的限制,一般指素數數列的項數有多少個連續項,最多可以存在多少個連續項 程式設計找出100以內的等差素數數列 思路 1.篩法找出100以內所有素數 2.對於素數list內兩兩組合,構造等差數列a...

MySQL趣味題 Hankson的趣味題

思路 由於x是b1的約數,所以x的質因子一定也是b1的質因子,我們可以對b1的每個質因子p,分別計算a0,a1,b0,b1分別 包含多少個p.然後討論x可能含有幾個p即可 include include include include include include using namespace ...

趣味問題之趣味整數

coding utf 8 created on thu nov 17 16 52 17 2016 author alis 趣味百題之趣味整數 求乙個數的所有因子 def factors num p 1 q num a while p q if num p 0 p 1 q num p a.sort r...