您的位置:首页 > 编程语言 > Python开发

python练习题

2017-02-10 20:36 375 查看
1 编写程序,完成下列题目(1分)

题目内容:

如果列出10以内自然数中3或5的倍数,则包括3,5,6,9。那么这些数字的和为23。要求计算得出任意正整数n以内中3或5的倍数的自然数之和。

输入格式:

一个正整数n。

输出格式:

n以内中3或5的倍数的自然数之和。

输入样例:

10

输出样例:

23

时间限制:500ms内存限制:32000kb

n = int(raw_input())

sum = 0

for i in range(0, n):

if i % 3 == 0 or i % 5 == 0:

sum += i

else:

print sum

2.编写程序,完成下列题目(1分)

题目内容:

10以内的素数2,3,5,7的和为17。要求计算得出任意正整数n以内的所有素数的和。

输入格式:

一个正整数n。

输出格式:

n以内的所有素数的和。

输入样例:

10

输出样例:

17

时间限制:500ms内存限制:32000kb

import math

n = int(raw_input())

sum = 0

for tmp in xrange(2, n):

for i in xrange(2, int(math.sqrt(tmp)+ 1) ):

if tmp % i == 0 :

break

else:

sum += tmp

print sum

3 编写程序,完成下列题目(1分)

题目内容:

根据下列信息计算在1901年1月1日至2000年12月31日间共有多少个星期天落在每月的第一天上?

a) 1900.1.1是星期一

b) 1月,3月,5月,7月,8月,10月和12月是31天

c) 4月,6月,9月和11月是30天

d) 2月是28天,在闰年是29天

e) 公元年数能被4整除且又不能被100整除是闰年

f) 能直接被400整除也是闰年

输出格式:

一个正整数

时间限制:500ms内存限制:32000kb

1).自己摸索出来的:

days = 0

weekday = 1

year = 1900

count = 0

num = 0

if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:

days = 366

else:

days = 365

weekday += days % 7

for year in range(1901,2001):

for month in range(1,13):

if month in [1,3,5,7,8,10,12]:

days = 31

weekday += days

if weekday % 7 == 0:

count += 
4000
;1

elif month in [4,6,9,11]:

days = 30

weekday += days

if weekday % 7 == 0:

count += 1

elif year % 4 == 0 and year % 100 != 0 or year % 400 == 0:

days = 29

weekday += days

if weekday % 7 == 0:

count += 1

else:

days = 28

weekday += days

if weekday % 7 == 0:

count += 1

print count

2.)做完作业后看到网友比较高级的答案:

count=0

year=1901

month=[31,28,31,30,31,30,31,31,30,31,30,31]

day= 1 + 365 %7

while year < 2001:

if (year%4==0 and year%100!=0) or year%400==0:

month[1]=29

else:

month[1]=28

for mon in range(12):

day += month[mon]

day = day%7

# print(day,mon)

if day == 0:

count += 1

year += 1

print(count)

4.编写程序,完成下列题目(2分)

题目内容:

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

输入格式:

一个正整数n。

输出格式:

n以内循环素数的数目。

输入样例:

100

输出样例:

13

时间限制:2000ms内存限制:32000kb

import math

count = 0

n = int(raw_input())

shuzi = 0

if n >= 2:

for shuzi in range(2,n+1):

#shuzi = 197

for yinzi in range(2,int(math.sqrt(shuzi) + 1)):

if shuzi % yinzi == 0:

#print ‘break:‘,shuzi,yinzi

break

else:

sushu = shuzi

#print sushu

sushu_tmp = sushu

weishu = 0

while sushu_tmp != 0:

weishu += 1

sushu_tmp /= 10

#print ‘weishu:‘,weishu

if weishu == 1:

count += 1

elif weishu >= 2:

#print sushu

i = 1

while i < weishu:

shuzi_xunhuan = int(sushu/(10**i)+(sushu %(10**i) )* (10 ** (weishu - i)))

i += 1

for yinzi2 in range(2,int(math.sqrt(shuzi_xunhuan) + 1)):

if shuzi_xunhuan % yinzi2 == 0 :

i = weishu + 1

break

if i == weishu:

count +=1

print count

本文出自 “运维者说:从菜鸟到老鸟” 博客,请务必保留此出处http://liuqunying.blog.51cto.com/3984207/1591886
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: