F90: Conjectura de Goldbach (com crivo)
From AdonaiMedrado.Pro.Br
Revision as of 20:42, 30 November 2008 by Adonaimedrado (Talk | contribs)
Este código foi desenvolvido pelo aluno Paulo Raimundo durante a disciplina Processamento de Dados (UFBA 2008.2). Data da apresentação: 25/11/2008.
Para conhecer sobre a Conjectura de Golbach visite: http://pt.wikipedia.org/wiki/Conjectura_de_Goldbach.
Para conhecer sobre o Crivo de Eratóstenes visite: http://pt.wikipedia.org/wiki/Crivo_de_Erat%C3%B3stenes
PROGRAM GolbachComCrivo IMPLICIT NONE INTEGER:: A, B, i, C, j, D, E, k, F, H, X, Z, Y INTEGER, DIMENSION(:), ALLOCATABLE :: V, P WRITE (*,*) "Digite até quanto deseja calcular a soma de 2 primos" READ (*,*) A ALLOCATE(V(1:A)) DO B=1,A V(B)=B END DO C=int(SQRT(real(A))) DO D=2,C IF (V(D)==-1) CYCLE DO j=2, A IF (D*j>A) EXIT V(D*j)=-1 END DO END DO k=0 ALLOCATE(P(1:A)) DO F=1,A IF (V(F)==-1.OR.V(F)==1) CYCLE k=k+1 P(k)=V(F) END DO DO Y=4,A,2 DO H=1,k Z=Y-P(H) IF (H==k) THEN WRITE (*,*) "Parabéns, você encontrou um contra exemplo e a conjectura é falsa!" PAUSE END IF DO X=k,1,-1 IF (P(X) > Z) CYCLE IF (P(X)==Z) THEN WRITE (*,*) Y, "=", P(H), "+", Z IF (Y==A) PAUSE "Acabou o calculo!" EXIT END IF IF (P(X) < Z) EXIT END DO IF (P(X)==Z) EXIT END DO END DO DEALLOCATE(V) DEALLOCATE(P) END PROGRAM GolbachComCrivo