RosettaCodeData/Task/Long-year/C/long-year.c
2023-07-01 13:44:08 -04:00

28 lines
569 B
C

#include <stdio.h>
#include <math.h>
// https://webspace.science.uu.nl/~gent0113/calendar/isocalendar.htm
int p(int year) {
return (int)((double)year + floor(year/4) - floor(year/100) + floor(year/400)) % 7;
}
int is_long_year(int year) {
return p(year) == 4 || p(year - 1) == 3;
}
void print_long_years(int from, int to) {
for (int year = from; year <= to; ++year) {
if (is_long_year(year)) {
printf("%d ", year);
}
}
}
int main() {
printf("Long (53 week) years between 1800 and 2100\n\n");
print_long_years(1800, 2100);
printf("\n");
return 0;
}