자유게시판

 번호: 211 작성일시: 2005-12-12 21:28:11 (220.126.221.182)
제목    Re:피타고라스의 수 구하는 것 중 이것에 대해 어떻게 생각하시나요
이름    박범준 조회 : 4975  

1. 모든 피타고라스 3쌍을 빠짐없이 구할 수 있다.

a²+k²=2ck

a가 3이상의 어떤수이던지

예를들어 짝수라면 2가 약수이므로 모든 짝수a(3이상)는 성립합니다.

그리고 홀수라면 1이 약수이므로 모둔 홀수a(3이상)는 성립합니다.

2. 알고리즘을 좀 더 간략화. 이를 통해 예를 들어 "a, b, c 모두 1만 이하인 모든 피타고라스 3쌍을 구하시오"에 대한 해를 10초 안에 구할 수 있는 프로그래밍을 한다면 재밌을 거 같습니다.

 

#include <stdio.h>
#define MAX 10000

main()
{
 int a,b,c,k;

 for(a=3;a<=MAX;a++)
 {
  for(k=1;k<a;k++)
  {
   if((a%k==0)&&(a%2==k%2))
   {
    c=(a*a+k*k)/(2*k);
    b=c-k;
    printf("%d, %d, %d\n",a,b,c);
   }
  }
 }

}

프로그래밍 소스입니다.

20.89초가 나왔습니다.

다음은 더 빠르게 하기 위해 출력을 파일 출력으로 처리했습니다.

 

#include <stdio.h>
#define MAX 10000

main()
{
 int a,b,c,k;
 FILE *fp;
 fp=fopen("pitamath.txt","w");

 for(a=3;a<=MAX;a++)
 {
  for(k=1;k<a;k++)
  {
   if((a%k==0)&&(a%2==k%2))
   {
    c=(a*a+k*k)/(2*k);
    b=c-k;
    fprintf(fp,"%d, %d, %d\n",a,b,c);
   }
  }
 }
 fclose(fp);
}

 

1.52초 걸렸습니다.

 

그 3이 a로 되는 모든 수를 피타고라스의 수를 구한뒤

4가 a로 되는 피타고라스의 수를 구하는 식으로

a의 값이 하나일지라도 피타고라스의 수는 여러가지이기 때문에

더 오래걸렸습니다.

 

 

 

참고로 이 것들은 제가 찾고 증명했습니다.

이미 있는것일수도 있구요 물론.

▦ 족구황제 , 2005-12-13 13:02:20 , 211.219.166.180
축하드립니다. 참고로, 2번에서 결과 뿌릴 때 3쌍이 서로 소인 경우만 찍어주는 것도 괜찮을 거 같습니다.



HOME