wyp02033
发表于 2018-9-11 17:12:07
def fab():
a, b = 5, 8
while True:
a, b = b, a + b
yield b
def main():
num = fab()
count = 0
while count < 10:
next_num = next(num)
next_num_sum = sum()
if next_num % next_num_sum == 0:
print(next_num)
count += 1
if __name__ == '__main__':
main()
龙战yl天下
发表于 2018-9-11 18:41:29
本帖最后由 龙战yl天下 于 2018-9-11 18:43 编辑
import copy
i = 1
n=0
num1 = 5
num2 = 8
while n < 10:
num3 = num2 + num1
#print ('num3=',num3) #斐波那契数
x=copy.copy(num3) #求各位之和
s=len(str(x))
h=0
sum=0 #sum表示各位之和
sz=[]
while h<s:
sz = sz +
x=x-sz*(10**(s-h-1))
sum+=sz
h+=1
e = num3 % sum #判断能否被整除
if e==0:
print (num3)
n=n+1
print('n=',n)
i += 1
num1 = num2
num2 = num3
答案:
21
n= 1
144
n= 2
2584
n= 3
14930352
n= 4
86267571272
n= 5
498454011879264
n= 6
160500643816367088
n= 7
114059301025943970552219
n= 8
5358359254990966640871840
n= 9
555565404224292694404015791808
n= 10
土匪加步枪
发表于 2018-9-11 21:08:54
def fib(value=1):
if value % sum_iter(value)==0 :
print(value)
def sum_iter(value):
iters=[]
n=len(str(value))
print(value)
for each in range(len(str(value))):
step=n-each-1
iters.append(int(value/(10**step)))
value=value-(int(value/(10**step))*(10**step))
print(iters)
return sum(iters)
def fibs(value):
if value % sum_iter(value)==0:
return value
else:
False
value=9
n=10
fibss=[]
while True:
value+=1
print(value)
if fibs(value) :
fibss.append(value)
n-=1
elif n==0:
break
BlueSand
发表于 2018-9-11 21:20:06
# encoding: utf-8
#斐波那契数中有些数字是可以被其各位数字之和整除的,例如:
# 144可以被1+4+4整除。
# 要求求出前10个这样的斐波那契数(不包括一位数1, 2, 3, 5, 8)
def getSum(number):
sum = 0
while number >= 1:
sum = sum + number % 10
number = number // 10
return sum
def isGood(n1, n2):
if n1 % n2 == 0:
return True
else:
return False
i = 0
f1 = 1
f2 = 1
result= []
while i < 10:
f3 = f1 + f2
f1, f2 = f2, f3
if f3 > 10:
t = getSum(f3)
if isGood(f3, t):
result.append(f3)
i = i + 1
print(result)
答案:
[21,
144,
2584,
14930352,
86267571272,
498454011879264,
160500643816367088,
114059301025943970552219,
5358359254990966640871840,
555565404224292694404015791808]
为什么你们的代码都这么简洁的,好羡慕
archlzy
发表于 2018-9-11 21:32:41
def f206(n):
def creat_num(m):
a, b = 1, 0
for i in range(m):
a ,b = a+b ,a
return a
result = []
m = 0
while len(result) < n:
m += 1
temp = creat_num(m)
if temp >10:
temp_a = 0
for i in str(temp):
temp_a += int(i)
if temp % temp_a == 0:
result.append(temp)
return result
子沙
发表于 2018-9-11 21:47:44
本帖最后由 子沙 于 2018-9-11 21:54 编辑
def fun_206(num):
x1,x2=1,1
x1,x2=x2,x1+x2
num1=0
while num1<num:
x1,x2=x2,x1+x2
if len(str(x2))>=2:
if x2%sum(list(map(lambda x:int(x),list(str(x2)))))==0:
print(x2)
num1+=1
fun_206(10)
运行结果如下:
21
144
2584
14930352
86267571272
498454011879264
160500643816367088
114059301025943970552219
5358359254990966640871840
555565404224292694404015791808
CoderWGB
发表于 2018-9-11 22:26:40
#斐波那契数中有些数字是可以被其各位数字之和整除的,例如:
# 144可以被1+4+4整除。
# 要求求出前10个这样的斐波那契数(不包括一位数1, 2, 3, 5, 8)。
# 666 -> 6+6+6 = 18获取各位之和
def aliquot(num):
temp = 0
for i in range(len(str(num))):
temp += int(str(num))
return temp
# 1,1,2,3,5,8,13,21...
def fibsNum():
a = 0
b = 1
num_list = []
while True:
a,b = b,a+b
if a > 10:
div = aliquot(a)
if a%div == 0:
num_list.append(a)
if len(num_list) == 10:
return num_list
print(fibsNum())
真是没想到,这后面的几个数这么大!!!
学学看看
发表于 2018-9-12 11:30:53
小沈同学
发表于 2018-9-13 20:51:54
z
jj482846
发表于 2018-9-13 22:34:04
n:每日一题 206 [修改]
Frankly
发表于 2018-9-14 07:45:42
看看
Y2M5210
发表于 2018-9-14 11:03:43
"""
斐波那契数列中有些数字可以 被其他各位数字之和整除的,求前十个,除(1,2,3,5,8),用三重双引号
"""
def snum(n):
if n < 10:
return n
else:
return n%10 + snum(n//10)
fa = 5
fb = 8
count = 0
while count < 10:
fc = fa + fb
fa = fb
fb = fc
if fc%snum(fc) == 0:
count += 1
print('第{0}个是{1}'.format(count,fc),end='\t')
if count%4 == 0:
print()
Chysial
发表于 2018-9-14 14:30:52
# 斐波那切数列 c=a+b
def fibonacci():
a = 1
b = 0
ailquot = 0
n = 0
fibo_sequence = []
fibo_divisible_number = []
while n<10:
c = a+b
b = a
a = c
fibo_sequence.append(c)
if len(str(c)) > 1:
t = sum()
if c%t == 0:
fibo_divisible_number.append(c)
n += 1
return fibo_sequence,fibo_divisible_number
print(fibonacci())
结果:
fibo_divisible_number:
tkxlyytqy
发表于 2018-10-12 11:11:41
# -*- coding:utf-8 -*-
list_fib=[]
def fib_fun(n):
i,a,b=0,1,1
list_fib.append(a)
while True:
a,b=b,a+b
i+=1
list_fib.append(a)
if i==n-1:
break
return list_fib
fib_fun(200)
i_str =""
sum=0
list_divd=[]
num=0
for i in list_fib:
if i>10:
i_str=str(i)
for j in i_str:
j=int(j)
sum+=j
if (i%sum)==0:
list_divd.append(i)
num += 1
if num == 10:
break
sum=0
for i in list_divd:
print(i)
抬起头~
发表于 2018-10-15 21:42:10
加油
喜欢吃菠菜
发表于 2018-10-17 09:44:03
塔利班 发表于 2018-9-10 10:43
这么多答案中,我看到的最pythonnic的,特别是map这个函数的写法。👍
sunrise085
发表于 2019-1-21 16:35:24
为了节省程序运行时间,斐波那契数就别再调用函数了,那样会多出很多次重复运算,直接在主程序中这样写,相当于只调用了一次斐波那契,而不是每进行一次while循环,就调用一次。
def mysum(num):
result=0
while num:
result+=num%10
num=num//10
return result
i,x1,x2=1,8,13
while i<=10:
if x2%mysum(x2)==0:
print('第%2d个数是%d' %(i,x2))
i+=1
x1,x2=x2,x1+x2
结果:
第 1个数是21
第 2个数是144
第 3个数是2584
第 4个数是14930352
第 5个数是86267571272
第 6个数是498454011879264
第 7个数是160500643816367088
第 8个数是114059301025943970552219
第 9个数是5358359254990966640871840
第10个数是555565404224292694404015791808
永恒的蓝色梦想
发表于 2019-8-17 22:04:57
本帖最后由 永恒的蓝色梦想 于 2019-8-17 22:05 编辑
不加限制算出来好多……
(部分结果)21
144
2584
14930352
86267571272
498454011879264
160500643816367088
114059301025943970552219
5358359254990966640871840
555565404224292694404015791808
1226132595394188293000174702095995
18547707689471986212190138521399707760
107168651819712326877926895128666735145224
280571172992510140037611932413038677189525
619220451666590135228675387863297874269396512
64202014863723094126901777428873111802307548623680
271964099255182923543922814194423915162591622175362
6656593304481317393598839952151746590023553382130993248
263621064469290555679241849789653324393054271110084140201023
690168906931029935139391829792095612517948949963798093315456
137347080577163115432025771710279131845700275212767467264610201
23041483585524168262220906489642018075101617466780496790573690289968
293825989466396564333419951255644330166833468672422805842178911936214659279
769246427201094785080787978422393713094534885688979999504447628313150135520
28624020537229717283244863695841661789309459371299941322398704536965075971940465647510004531000816
955620997609204752896986850849030784038174487916669186294134525152075026461787231598163278910835948084128
99080696264900721472208515956748759187919804840608734007367661059706052043279378932885908102386332543066271936
31903676490304597847185685736169548906931858202641803975680844768196795244879691985828019808017263472521442003280
1065113236465588309403889415460645093083860991848425732542338227915288346612042420944981983005010603735148681490199640832代码a,b=1,1
while 1:
a,b=b,a+b
if a%sum((int(i)for i in str(a)))==0 and len(str(a))!=1:print(a)
小陨aoq
发表于 2020-8-15 21:37:12
看看答案
19971023
发表于 2020-12-14 10:18:06
1