Write a program to compute the date of Easter Sunday. Easter Sunday is the first Sunday after the first full moon of spring.
Use the algorithm invented by the mathematician Carl Friedrich Gauss in 1800:
- Let
y
be the year (such as 1800 or 2001)
- Divide
y
by 19
and call the remainder a
. Ignore the quotient.
- Divide
y
by 100
to get a quotient b
and a remainder c
.
- Divide
b
by 4
to get a quotient d
and a remainder e
.
- Divide
8 * b + 13
by 25
to get a quotient g
. Ignore the remainder.
- Divide
19 * a + b - d - g + 15
by 30
to get a remainder h
. Ignore
the quotient.
- Divide
c
by 4
to get a quotient j
and a remainder k
.
- Divide
a + 11 * h
by 319
to get a quotient m
. Ignore the remainder.
- Divide
2 * e + 2 * j - k - h + m + 32
by 7
to get a remainder r
. Ignore the quotient.
- Divide
h - m + r + 90
by 25
to get a quotient n
. Ignore the
remainder.
- Divide
h - m + r + n + 19
by 32
to get a remainder of p
. Ignore the
quotient.
Then Easter falls on a day p
of month n
.
For example, if y is 2001:
a = 6
b = 20
c = 1
d = 5
e = 0
g = 6
h = 18
j = 0
k = 1
m = 0
r = 6
n = 4
p = 15
Therefore, in 2001, Easter Sunday fell on April 15.
Make sure you prompt the user for a year and have the user input the year. Also, make sure you output the values of p and n with the appropriate messages describing the values output.
I'm having a little trouble putting this into Java code. Here's what I've tried:
import java.util.Scanner;
public class Easter {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int y = 2014;
int a = y % 19;
int b = y / 100;
int c = y % 100;
int d = b / 4;
int e = b % 4;
int g = (8 * b + 13) / 25;
int h = (19 * a + b - d - g + 15) % 30;
int j = c / 4;
int k = c % 4;
int m = (a + 11 * h) / 319;
int r = (2 * e + 2 * j - k - h + m + 32) % 7;
int n = (h - m + r + 90) / 25;
int p = (h - m + r + n + 19) % 32;
getEasterSundayMonth = n;
System.out.println("Month: " + Easter.getEasterSundayMonth());
}
}
This is what I have. I don't know how to assign stuff, like I tried to get getEasterSundayMonth
to equal the value of n
, pretty sure its not right. Where do I go from here?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…