鱼C论坛

 找回密码
 立即注册
楼主: 冬雪雪冬

[技术交流] Python:每日一题 206

[复制链接]
发表于 2018-9-10 15:37:36 | 显示全部楼层
  1. def fun206(n):

  2.     def fib():
  3.         a, b = 0, 1
  4.         while 1:
  5.             a, b = b, a + b
  6.             yield a

  7.     g = fib()
  8.     f = filter(lambda x: len(str(x)) > 1 and not x % eval('+'.join(str(x))), g)
  9.     return [next(f) for _ in range(n)]

  10. print(fun206(10))
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-10 15:38:32 | 显示全部楼层
来哦做作业
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-10 16:57:25 | 显示全部楼层
本帖最后由 Henriz 于 2018-9-10 16:59 编辑
  1. def zhengchu(num):
  2.     a = b = 1
  3.     i = 1
  4.     while 1:
  5.         a , b = b , a+b
  6.         n = 0
  7.         if len(str(a))>1:
  8.             for m in range(len(str(a))):
  9.                 n += int(str(a)[m])
  10.             if a%n == 0:
  11.                 yield a
  12.         i += 1
  13.         if i > num:
  14.             break
复制代码
  1. m = 0
  2. for i in zhengchu(500):
  3.         if m < 10:
  4.                 print(i)
  5.                 m += 1
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-10 17:27:08 | 显示全部楼层
本帖最后由 zhou995287902 于 2018-9-10 17:56 编辑
  1. def feibonacci(num):
  2.     a,b = 0,1
  3.     count = 0
  4.     while count <num:
  5.         yield a
  6.         a,b = b,a+b
  7.         count +=1


  8. def fun206(n):
  9.     result = list()
  10.     for i in feibonacci(500):
  11.         if i in [0,1,2,3,5,8]:
  12.             pass
  13.         else:
  14.             num = 0
  15.             for each in str(i):
  16.                 num+=int(each)
  17.             if i%num==0:
  18.                 result.append(i)
  19.         if len(result)==n:
  20.             break
  21.     print(result)

  22. if __name__ == '__main__':
  23.     fun206(10)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-10 18:07:35 | 显示全部楼层
def feib():
    a = 0
    b = 1
    while True:
        a,b = b,a+b
        yield b
count = 0
for i in feib():
    num = 0
    for j in str(i):
        num += int(j)
    if i % num == 0 and i > 8:
        count += 1
        print(i)
    if count == 10:
        break

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-10 19:08:31 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-9-10 19:29:14 | 显示全部楼层
  1. def getNum(n=10):
  2.     i, j = 1, 1
  3.     list0 = []
  4.     while len(list0) < n:
  5.         i, j, k, l = i + j, i, 0, i
  6.         if l > 10:
  7.             while l > 0:
  8.                 k += l % 10
  9.                 l //= 10
  10.             if i % k == 0:
  11.                 list0.append(i)
  12.     return list0

  13. print(getNum())
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-10 20:25:52 | 显示全部楼层
  1. >>> def fb():
  2.         a,b=1,1
  3.         while True:
  4.                 yield a
  5.                 a,b = b, a+b

  6.                
  7. >>> def fun( x=10 ):
  8.         f = fb()
  9.         n = 0
  10.         res = []
  11.         while n < x:
  12.                 t = next(f)
  13.                 if t < 10:
  14.                         continue
  15.                 r = sum(int(k) for k in str(t))
  16.                 if t % r == 0:
  17.                         n += 1
  18.                         res.append(t)
  19.         return res

  20. >>> fun()
  21. [21, 144, 2584, 14930352, 86267571272, 498454011879264, 160500643816367088, 114059301025943970552219, 5358359254990966640871840, 555565404224292694404015791808]
  22. >>>
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-10 21:36:33 | 显示全部楼层
  1. def fab(n):
  2.         if n <= 2:
  3.                 return n
  4.         else:
  5.                 return fab(n-1) + fab(n-2)
  6. i = 6
  7. res = []
  8. while True:
  9.         n = fab(i)
  10.         sum_ = sum([int(i) for i in str(n)])
  11.         if n % sum_ == 0:
  12.                 res.append(n)
  13.         i += 1
  14.         if len(res) == 10:
  15.                 for i in res:
  16.                         if res.index(i) != 9:
  17.                                 print(i, end=',')
  18.                         else:
  19.                                 print(i)
  20.                 break
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-10 21:49:16 | 显示全部楼层
本帖最后由 CC柴 于 2018-9-10 21:50 编辑
  1. def fb():
  2.     a,b,c = 1,2,0
  3.     while True:
  4.         a,b = b,a+b
  5.         n = str(a)
  6.         if len(n) > 1:
  7.             sum = 0
  8.             for i in n:
  9.                 sum += int(i)
  10.             if a % sum == 0:
  11.                 c += 1
  12.                 print(a)
  13.                 if c > 9:
  14.                     break
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-10 21:53:53 | 显示全部楼层
def function(n):
    n3=1
    n1=1
    n2=1
    while (n>2):
        n3=n1+n2
        n1=n2
        n2=n3
        n-=1
    return n3
temp=[]
for i in range(1,1000):
    result=function(i)
    if result not in [1, 2, 3, 5, 8]:
        value=result
        count=0
        while result>0:  
            count+=result%10
            result//=10
        if value%count==0:
            temp.append(value)
    if len(temp)==10:
        print(temp)
        break
        

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-11 00:07:03 | 显示全部楼层
  1. def sum(n):
  2.     s = 0
  3.     while n:
  4.         s += n % 10
  5.         n //= 10
  6.     return s
  7. a = [5,8]
  8. for i in range(2,140):
  9.     t = a[i-1] + a[i-2]
  10.     a.append(t)
  11. cnt = 0
  12. for each in a:
  13.     if cnt == 10:
  14.         break;
  15.     if each > 8 and each % sum(each) == 0:
  16.         cnt += 1
  17.         print(each)
复制代码

>>
21
144
2584
14930352
86267571272
498454011879264
160500643816367088
114059301025943970552219
5358359254990966640871840
555565404224292694404015791808

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-11 00:11:13 | 显示全部楼层
学习
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-9-11 07:02:38 | 显示全部楼层
#存放数据
list1=[]
#存放斐波那契数
list2=[1,2]
#循环
while len(list1)<10:
    list2[-2],list2[-1]=list2[-1],list2[-1]+list2[-2]
    z=list2[-1]
    y=str(z)
    if len(y)>=2:
        num1=0
        for x in y:
            num1+=int(x)
        if list2[-1]%num1==0:
            list1.append(z)
print(list1)

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-11 09:45:14 | 显示全部楼层
看似简单,实操
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-11 11:12:44 | 显示全部楼层
def fab():
    a1 = 1
    a2 = 1
    a3 = 1
    bb = 0
    count = 0
    list1 = []

    while count < 10:
        a3 = a1 + a2
        a1 = a2
        a2 = a3
        
        if a3 > 9:
            bb = 0
            for i in str(a3):
                bb = bb + int(i)
            if  a3 % bb:
                continue
            else:
                print(a3)
                count += 1
                list1.append(a3)
    print(list1)

result = fab()

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-11 13:28:45 | 显示全部楼层
  1. def fib_itr(n):
  2.     if n < 0:
  3.         return None
  4.     if n <= 1:
  5.         return (0, 1)[n]
  6.     a, b = 0, 1
  7.     for i in range(n-1):
  8.         a, b = b, a+b
  9.     return b


  10. i = 7
  11. n = 0
  12. while n < 10:
  13.     fbi = fib_itr(i)
  14.     sm = sum([int(d) for d in str(fbi)])
  15.     if not fbi % sm:
  16.         print(fbi)
  17.         n += 1
  18.     i += 1
复制代码


结果:
21
144
2584
14930352
86267571272
498454011879264
160500643816367088
114059301025943970552219
5358359254990966640871840
555565404224292694404015791808

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-11 14:53:06 | 显示全部楼层
  1. def b():
  2.     a=1
  3.     b=0
  4.     while True:
  5.         yield a+b
  6.         a,b=a+b,a
  7. x=1
  8. for i in b():
  9.     if i<10:
  10.         continue
  11.     elif x<11:
  12.         i=str(i)
  13.         r=0
  14.         for y in i:
  15.             r+=int(y)
  16.         if not int(i)%r:
  17.             print(i)
  18.             x+=1
  19.     else:
  20.         break
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-11 15:55:04 | 显示全部楼层

  1. def get_Ineed():
  2.     T = True
  3.     t = []
  4.     i = 0
  5.     k = 1
  6.     while T:
  7.        # if len(str(k))>100:
  8.        #     break
  9.            
  10.         fb = []
  11.         i = i+k
  12.         k = k+i
  13.         fb.append(i)
  14.         fb.append(k)
  15.         #print("运行中")
  16. #开始获取特殊斐波那契数
  17.         for each in fb:
  18.             if each>=10:#过滤(1,2,3,5,8)              
  19.                 tem = []
  20.                 eg = 0
  21.                 each_cp = each
  22.                 #print(each)#检查传入数
  23.                 while True:
  24.                     if len(str(each))>=2:
  25.                         v = each%10
  26.                         each = each//10
  27.                         tem.append(v)
  28.                     else:
  29.                         tem.append(each)
  30.                         #print(tem)
  31.                         break
  32.                 #print(tem)   
  33.                 for tvar in tem:
  34.                     eg = tvar+eg
  35.                 if len(t)<10:
  36.                     #print(t)
  37.                     if each_cp % eg == 0 :
  38.                         t.append(each_cp)
  39.                     else:
  40.                         pass
  41.                 else:
  42.                     T = False
  43.             else:
  44.                 pass
  45.     for each in t:
  46.         print(each)
  47.         
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-11 16:53:37 | 显示全部楼层
学习下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-30 13:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表