C语言类最小公倍数问题

编程时遇到这个,不知道如何遍历每个月份(各个月份天数不同)
在国外,每月的 13 号和每周的星期 5 都是不吉利的。特别是当 13 号那天恰好是星期 5时,更不吉利。输入特定年份与元旦那天是星期几,请你从小到大依次输出当年所有13 号是星期 5 的月份。如果当年不存在星期 5 是 13 号的月份,就输出一行 "Luck"
开始觉得就是最小公倍数问题,后来发现月份不同天数不同,然后卡住了

没想的这么复杂,蔡勒公式就可以,供参考:

#include <stdio.h>
int Get_Week(int y, int m, int d)
{
    int week = -1;
    if (m == 1 || m == 2)  m += 12,  y--;
    week = (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400) % 7 + 1;
    return week;
}
int main()
{
    int y, m, flg;
    printf("请输入(年份):");
    scanf("%d", &y);
    for (m = 1, flg = 0; m < 13; m++) {
        if (Get_Week(y, m, 13) == 5)
            printf(flg++ == 0 ? "%d" : " %d", m);
    }
    if (!flg)
        printf("Luck");
    return 0;
}

月份不同天数不同,写个switch不就行了,反正一共就3种,要么31天,要么30天,要么是2月,需要判断一下平年闰年
然后你就循环一下,判断每个月的13号距离1月1号是多少天,加上1月1号的星期再对7取余就是星期