2024年10月30日 星期三

質數日

 def is_leap(year):

    # 檢查是否為閏年

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


def is_prime(n):

    # 檢查 n 是否為質數

    if n < 2:

        return False

    if n % 2 == 0:

        return n == 2

    for i in range(3, int(n**0.5) + 1, 2):

        if n % i == 0:

            return False

    return True


# 定義每個月的天數

def days_in_month(year, month):

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

        return 30

    elif month == 2:

        return 29 if is_leap(year) else 28

    else:

        return 31


prime_dates = []


# 範圍是2000年到2999年

for year in range(2000, 3000):

    for month in range(1, 13):

        for day in range(1, days_in_month(year, month) + 1):

            # 將日期格式化為 YYYYMMDD

            date_number = int(f"{year}{month:02d}{day:02d}")

            # 檢查是否為質數

            if is_prime(date_number):

                prime_dates.append(date_number)


# 列出所有質數日並輸出總數

for prime_date in prime_dates:

    print(prime_date)


print("質數日總數:", len(prime_dates))


# 執行結果:

# .

# .

# .

# 29990119

# 29990123

# 29990131

# 29990327

# 29990503

# 29990603

# 29990621

# 29990707

# 29990713

# 29990717

# 29990801

# 29990903

# 29990927

# 29990929

# 29991001

# 29991019

# 29991109

# 29991113

# 29991119

# 29991211

# 質數日總數: 21934

沒有留言:

張貼留言