Python的几个小程序

来源:互联网 发布:sas程序员应届生招聘 编辑:程序博客网 时间:2024/05/04 20:22

题目内容:
数字197可以被称为循环素数,因为197的三个数位循环移位后的数字:197,971,719均为素数。100以内这样的数字包括13个,2,3,5,7,11,13,17,31,37,71,73,79,97。要求任意正整数n以内一共有多少个这样的循环素数。

def isPrime(n): //判断一个数是否为素数    if n <= 1:        return False    i = 2    while i*i <= n:        if n % i == 0:            return False        i += 1    return Truedef cycle(num):  //返回一个数的循环数字列表,注意当数字中含有0时不能作为数字第一位    strNum=str(num)    length=len(strNum)    cycle_all=[]    for i in range(length):        number=int(strNum[i:]+strNum[:i]) //将字符串从第i个位置断开成为两个字符串,重新排序        cycle_all.append(number)    return cycle_allsum=0n=int(raw_input())for i in range(2,n):    Flag = True    for j in cycle(i):        if not isPrime(j):            Flag=False            break  //判断一个数字的所有循环数是不是质数    if Flag:     // 全部是质数就加上1        sum+=1print sum

题目内容:

一个斐波那契数列的前10项为:1, 2, 3, 5, 8, 13, 21, 34, 55, 89,对于一个最大项的值不超过n的斐波那契数列,求值为偶数的项的和。

这道题目刚开始我用递归写的斐波那契数列,结果发现OJ运行超时了,然后改写了一下,就没问题了

sum=2  i=1j=2k=i+jn=int(raw_input())//不考虑非正常输入while k<n:    if k %2==0:         sum +=k    z=k    k=j+k    i=j    j=zprint sum

题目内容:
若已知1800年1月1日为星期3,则对于一个给定的年份和月份,输出这个月的最后一天是星期几。

def is_rn(y): //判断年份是否为闰年    if y% 4==0 and y%100!=0 or y%400==0:        return True    else:        return Falsedef get_days_in_month(y,m): //获得一年中每个月的天数    if m in (1,3,5,7,8,10,12):        return 31    elif m  in (4,6,9,11):        return 30    elif is_rn(y):        return 29    else :        return 28def total_days(y,m):        //获得180011日到现在的天数    days=0    for j in range(1800,y):        if is_rn(j):            days +=366        else :            days+=365    for i  in range (1,m+1):        days+=get_days_in_month(y,i)    return daysdef gsd(y,m):           //求出具体的星期    we=(2+total_days(y,m))%7       return wey=int(raw_input())m=int(raw_input())print gsd(y,m)

题目内容:
如在汉诺塔游戏中,我们希望将塔A上的n个盘子,通过塔B移动到塔C,则对于任意输入的n,给出移动的步骤。

def h(n,A,B,C):    if n==1:        print  "Move",n,"from",A,"to",C    else:        h(n-1,A,C,B)        print  "Move",n,"from",A,"to",C        h(n-1,B,A,C)   //简单的递归调用n=int(raw_input())h(n,'A','B','C')
0 0
原创粉丝点击