zoukankan      html  css  js  c++  java
  • Python【每日一问】23

    问:

    【基础题】:判断 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()

    输出结果:

  • 相关阅读:
    深度排序与alpha混合 【转】
    SVN服务器配置说明 【转】
    3D空间中射线与轴向包围盒AABB的交叉检测算法 【转】
    Linux系统管理员不可不知的命令:sudo
    Linux 系统实时监控的瑞士军刀 —— Glances
    shell定期转移日志文件到云盘并定期删除云盘文件
    zabbix监控第二块网卡是否连通
    Gitlab自动触发Jenkins构建打包
    shell脚本检测网络是否畅通
    Prometheus入门
  • 原文地址:https://www.cnblogs.com/ElegantSmile/p/10855433.html
Copyright © 2011-2022 走看看