查看“Python运维开发 第10周”的源代码
←
Python运维开发 第10周
跳转至:
导航
,
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
==反素数== ===描述=== 反素数(逆向拼写的素数)是指一个将其逆向拼写后也是一个素数的非回文数。例如:13和31都是素数,且13和31都不是回文数,所以,13和31是反素数。 输入一个正整数 n , 请输出从小到大排列的的前n个反素数,数字后面以一个空格进行分隔。 ===输入格式=== 输入一个正整数 ===输出格式=== 符合条件的反素数 ===输入输出示例=== ===代码=== <nowiki> def prime(n): if n <= 1: #小于2的数字单独处理 return 0 for i in range(2,int(n**(1/2)+1)): #根据素数定义判定是否是素数,是素数返回1 if n % i == 0: return 0 return 1 if __name__ == "__main__": n = int(input()) i = 2 count = 0 while True: if prime(i) and prime(int(str(i)[::-1])) and str(i) != str(i)[::-1]: #如果是反素数 print(i,end = ' ') #数字间空格分隔 count = count + 1 if count == n: break i = i+ 1 </nowiki> ==侯先生爬楼梯== ===描述=== 侯先生每天都会爬楼梯锻炼身体,他有时候一次上跨一级,有时候一次上跨两级...有一天侯先生想弄明白一个很难的问题:从最下面的第1级开始到顶端的第n级一共有多少种走法呢?比如n是3时,有两种走法(或者直接从第1级上跨两步到第3级,或者从第1级跨一步到2级再跨一步到第3级)。 请你帮帮侯先生,给你n(1<n<40)的值,你帮忙计算并输出有多少种爬到顶端的方法。 ===输入格式=== 输入n的值,n是1到40之间的整数。 ===输出格式=== 输出一共有多少种从第1级台阶到第n级台阶的走法。 ===代码=== <nowiki> 参考代码: n=eval(input()) li=[0]*n if n==2: print(1) elif n==3: print(2) else: li[n-1]=1 li[n-2]=2 for i in range(n-3,0,-1): li[i]=li[i+1]+li[i+2] print(li[1]) #或者使用递归来实现: def upstrs(n): if n==2: return 1 elif n==3: return 2 else: return upstrs(n-1)+upstrs(n-2) n=eval(input()) li=[0]*n print(upstrs(n)) </nowiki> ==计算ID号== ===描述=== 我的微信ID是大写字母WHUT后面的数字是两个素数连在一起,大的在前,小的在后,如果我告诉你两数的乘积是多少,你能计算出我的ID号吗? 如果输入一个[0-9]之间的数字,你能统计出从1开始到我ID中的数字的序列里,一共出现多少次这个数字吗? ===输入格式=== 第一行输入ID中两个素数的乘积 第二行输入一个[0-9]之间的数字 ===输出格式=== 第一行输出ID号 第二行输出数字的次数 ===输入输出示例=== <nowiki> 输入 输出 示例 1 196409 3 WHUT997197 599140</nowiki> ===代码=== <nowiki> def isPrime(n): # 判断参数 n 是否为素数的函数 if n < 2: # 小于2的数字都不是素数 return False for i in range(2, int(n ** 0.5) + 1): # 根据素数定义判定是否是素数,是素数返回1 if n % i == 0: # 从 2到n-1中如果存在一个数是i,使n 可以整除i,则n不是素数 return False else: # 若for循环未遇到return正常结束,则n是素数 return True def checkId(n): if n % 2 == 0 and isPrime(n // 2): # 如果n能被2整除,单独处理,提高效率 return int(str(n // 2) + str(2)) else: for num in range(3,n//2+1,2): # 如果n不能被2整除,则两个素数不包括2,都是奇数 if isPrime(num) and n % num == 0 and isPrime(n // num): # isPrime(n // num)放在最后,利用短路效应,可以使大数的素数判定次数最少 return int(str(n // num) + str(num)) # 返回值转字符串拼接后再转整数 def countnumber(n,num): m, countnum = 1, 0 while n//m > 0: high, mod = divmod(n, m*10) curNum, low = divmod(mod, m) if curNum > num: countnum += high*m + m elif curNum == num: countnum += high*m + low + 1 else: countnum+= high*m m = m*10 return countnum if __name__ == '__main__': n = int(input()) # 输入ID,整数,保证是两个素数的积 number = int(input()) # 输入0-9之间的一个数字 ID = checkId(n) countNumber = countnumber(ID,number) # 统计 number的个数 print('WHUT' + str(ID)) print(countNumber)</nowiki>
返回至
Python运维开发 第10周
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息