问:
【基础题】:判断 101-200 之间有多少个素数,并输出所有素数
PS:素数:一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数
【提高题】:输入某年某月某日,判断这一天是周几?(不能用库)
答:
【基础题】:判断 101-200 之间有多少个素数,并输出所有素数
PS:素数:一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数
方法1:
prime_number_list = [] for i in range(101, 201): for j in range(2, int(i**0.5)+1): if i % j == 0: break else: prime_number_list.append(i) print("101-200之间的素数有:{}个".format(len(prime_number_list))) print(prime_number_list)
方法2:
''' 求100到200以内的素数 ''' prime_number_list = [2] for i in range(3, 201): for prime_number in prime_number_list: if i % prime_number == 0: break else: prime_number_list.append(i) filtered_prime_number_list = list(filter(lambda x: x>= 101, prime_number_list)) print(filtered_prime_number_list)
输出结果:
[101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199]
【提高题】:输入某年某月某日,判断这一天是周几?(不能用库)
import re # 1582年10月15是周六 class calen: def __init__(self, year, month, day): self.Year = year self.Month = month self.Day = day self.other = 16 + 30 + 31 ''' 1582年以前各国日历计算不太一样, 所以1582年以前一年不知道多少天,345天都有可能。 因此直接从1583年算起的,1582.10.15到1582.12.31一共 self.other 天 ''' # 判断闰年 def is_leap_year(self, year): if (year % 400 == 0) or (year % 100 != 0 and year % 4 == 0): return 366 else: return 365 def week(self): weekdays = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"] monthday = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] # 判断二月 if self.is_leap_year(self.Year) == 366: monthday[1] = 29 day_sum = 0 # 判断年数 for y_year in range(1583, self.Year): if self.is_leap_year(y_year) == 366: day_sum += 366 else: day_sum += 365 # 判断月数 for m_month in range(self.Month - 1): day_sum += monthday[m_month] # 天数 day_sum += self.Day weekday = (day_sum - self.other - 10) % 7 print("这一天是{}".format(weekdays[weekday])) if __name__ == "__main__": input_date = input('请输入日期(年-月-日):') year_number, month_number, day_number = map(int, re.findall(r'd+', input_date)) w = calen(year_number, month_number, day_number) w.week()
输出结果: