Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- // Algoritmo de O'Beirne para determinar a data da P�scoa.
- // http://problemasteoremas.wordpress.com/2010/01/02/algoritmo-de-obeirne-em-10-passos-para-determinar-o-domingo-de-pascoa/
- // copyleft 2010 Renan Birck <renan.ee.ufsm EM gmail.com>.
- int main(int argc,char *argv[]) {
- unsigned int ano, a, b,c, delta, eps, gama, h, mu, j, k, lambda, n, q, p;
- unsigned int tmp1;
- if(argc == 1) {
- printf("Ano: ");
- scanf("%d",&ano);
- }
- else {
- ano = atoi(argv[1]);
- }
- // 1. Divida-se X por 100 e anote-se o quociente B e o resto C.
- b = ano/100;
- c = ano%100;
- // 2. Tome-se 5b+c e divida-se por 19; chame-se A ao resto.
- a = (5*b+c)%19;
- // 3. Calcule-se 3(b+25) e divida-se por 4;
- // designe-se o quociente por delta e o resto por epsilon.
- tmp1 = 3*(b+25);
- delta = tmp1/4;
- eps = tmp1%4;
- // 4. Calcule-se 8(b+11) e divida-se por 25;
- // anote-se o valor do quociente (gama);
- tmp1 = 8*(b+11);
- gama = (unsigned int)tmp1/25;
- // 5. Calcule-se 19a+delta-gama e divida-se por 30;
- // anote-se o valor do resto (h);
- h = (19*a+delta-gama)%30;
- // 6. Calcule-se a + 11h e divida-se por 319; anote-se
- // o valor do quociente (mu);
- mu = (a+11*h)/319;
- // 7. Calcule-se 60(5-ɛ)+c e divida-se por 4;
- // anote-se o valor do quociente (j) e do resto (k);
- tmp1 = 60*(5-eps)+c;
- j = tmp1/4;
- k = tmp1%4;
- // 8. Calcule-se 2j-k-h+μ e divida-se por 7; anote-se o valor do resto (λ);
- lambda = ((2*j)-(k)-(h)+(mu))%7;
- // 9. Calcule-se h-μ+λ+110 e divida-se por 30;
- // anote-se o valor do quociente (n) e do resto (q);
- tmp1 = h-mu+lambda+110;
- n = tmp1/30;
- q = tmp1%30;
- // 10. Calcule-se q+5-n e divida-se por 32;
- // o quociente deve ser nulo e ao resto chame-se p.
- p = (q+5-n)%32;
- printf("Dia da p�scoa: %d/%s/%d",(int)p,(int)n == 3?"mar�o":"abril",(int)ano);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement