이 페이지는 코딩도장 데이터의 읽기 전용 정적 보관본입니다.

Special Pythagorean triplet

출처 : 프로젝트 오일러 9번문제, 한글 번역판


세 자연수 a, b, c 가 피타고라스 정리 a^2 + b^2 = c^2 를 만족하면 피타고라스 수라고 부릅니다 (여기서 a < b < c ). 예를 들면 3^2 + 4^2 = 9 + 16 = 25 = 5^2 이므로 3, 4, 5는 피타고라스 수입니다.

a + b + c = 1000 인 피타고라스 수 a, b, c는 한 가지 뿐입니다. 이 때, a × b × c 는 얼마입니까?

2017/06/04 23:50

S ReolSt

138개의 풀이가 있습니다.

python 3.6 일단은 수학문제니까 수학적 설명을 좀 해야 할 것 같습니다. 미지수가 3개, 식은 2개니 값이 식만으로는 산출이 안되고 범위를 정해서 구해야 하죠. a+b+c = 1000, a+b > c 이므로(삼각형이니까) c < 500 이며 즉, a<b<c<500 입니다.

범위는 정해졌고, 어떤 것을 구하냐 인데. a, b 를 c 로 정리를 하면 c - b = a^2 / (1000-a), c - a = b^2 / (1000-b) 입니다. a term 으로 쓰든 b term 으로 정리하든 식은 같습니다. 그리고 이 모두 자연수이어야 하므로 식에서 나오는 두 수중 작은 것이 a, 큰 것이 b 가 됩니다. 그러면 c 는 당연이 1000-(a+b) 입니다.

한줄코드로 만들려고 했는데 한줄로 했더니 넘 지저분하고 가독성이 없어서 그냥 두줄로 만들었습니다.

import numpy as np

a_b = [i for i in range(1,500) if (i**2 / (1000-i)) % 1 == 0] # [200, 375]
print(np.prod(a_b) * (1000-sum(a_b))) # 200 * 375 * 425

31875000

2017/06/09 10:22

예강효빠

for a in range(1,500):
  for b in range(a,500):
    for c in range(b,500):
      if a*a+b*b==c*c:
        if a+b+c==1000:
          print(a*b*c)

2017/06/13 08:08

onest7

Python으로 작성했습니다.

for a in range(1, 1000):
    for b in range(1, 1000 - a):
        c = 1000 - (a + b)
        if (a**2 + b**2 == c**2) & (a < b < c):
            print(a, b, c)

2017/08/01 11:13

arloe

Ruby

Euclid's formula. s=1000일 때, sqrt(s/4) < m < sqrt(s/2)

풀이 1. one-liner

(16..22).each {|m| (1...m).each {|n| puts (m**4-n**4)*2*m*n if m*(m+n) == 500 }} 

풀이 2. 일반화

prt = ->m,n,s { puts (m*m-n*n) * (m*m+n*n) * 2*m*n if m*(m+n) == s/2 }
ptm = ->s { (((s/4)**0.5).ceil..((s/2)**0.5).to_i).
              each {|m| (1...m).each {|n| prt[m,n,s]}} }

Test

expect{ ptm[12] }.to output("60\n").to_stdout # 3+4+5=12, 3*4*5=60
expect{ ptm[1000] }.to output("31875000\n").to_stdout

2017/06/05 19:06

rk

python 최악의 복잡도 알고리즘.. 이지만 가장 빠른 코딩?이 아닐까 합니다.


def findPythagoreanTriplet():
    for c in range(1000, 0, -1):
        for b in range(c-1, 0, -1):
            for a in range(b-1, 0, -1):
                if a+b+c==1000 and a**2 + b**2 == c**2:
                    print("a*b*c={0}, a={1}, b={2}, c={3}".format(a*b*c, a, b, c))

findPythagoreanTriplet()
a*b*c=31875000, a=200, b=375, c=425

2017/06/08 18:44

박정호

// 피타고라스 수의 합이 1000 - C
#include <stdio.h>

int main(void)
{
    int a, b, c;
    for (a = 1; a < 1000; a++)
        for (b = 1; b < 1000; b++)
            for (c = 1; c < 1000; c++)
                if (a * a + b * b == c * c && a + b + c == 1000)
                    goto HOORAY;
HOORAY:             
    printf("%d, %d, %d, %d\n", a, b, c, a * b * c);
    //200, 375, 425, 31875000
    return 0; 
}

2017/06/14 11:18

Jeong Hoon Lee

a, b, c는 삼각형의 세 변의 길이이고 편의상 a <= b <= c 라고 하겠습니다.

이 때 a 는 1에서 333 까지 범위에 있을 수 있습니다. (a = b = c 일때가 가장 크겠죠)

a를 그 범위 중 특정한 값에 둔다면 b는 둘레의 길이를 P라 했을 때 a <= b <= (P - a) / 2 사이의 범위가 됩니다.

이 범위내에서 가장 긴 변인 c에 대해서 피타고라스 정리를 만족하는 쌍을 찾으면 되겠습니다.

Swift 입니다.

let p = 1000
main: for a in 1..<(p/3) {
    for b in a..<((p-a)/2) {
        let c = p - a - b
        if c * c == a * a + b * b {
            print(a * b * c)
            break main      
        }
    }
}

2017/07/06 14:29

룰루랄라

a<b<c, a^2+b^2=c^2

a+b+c=1000 ... (1), c < a+b < 2c ... (2)

(1) 에서 a+b=1000-c 를 (2)에 대입하면 c<1000-c<2c => 333 334<=c<500

def pytha():
    for c in range(334, 500):
        for a in range(1, 1000 - c):
            b =  1000 - c - a
            if b > 0 and a*a + b*b == c*c:
                return a*b*c


print(pytha()) # 31875000

2017/07/07 05:16

Noname

for c in range(1,500):
    for b in range(1,c-1):
        for a in range(1,b-1):
            if a*a + b*b == c*c and a+b+c == 1000:
                print 'a = '+str(a)+' b = '+str(b)+' c = '+str(c)+'\n답 = '+str(a*b*c)
                break

실행결과

a = 200 b = 375 c = 425 답 = 31875000

2017/07/13 23:26

이경민

for x in range(333):
    for y in range(x,500):
        z = 1000 - x - y
        if z*z == x*x + y*y and x < y < z and x + y > z:
            print("x값:",x,"y값:",y,"z값:",z)

2017/07/15 17:40

이기현

object Problem9
{
  def pow(a: BigDecimal, b : BigDecimal):BigDecimal = {
    def realpow(a:BigDecimal, b : BigDecimal, r: BigDecimal): BigDecimal = if(b == 1) a*r else realpow(a,b-1,a*r)
    realpow(a,b,1)
  }
  def ret(a : BigDecimal, b : BigDecimal): BigDecimal = a + b + sqrt((pow(a,2) + pow(b,2)).toDouble)
  def search(i : BigDecimal, j : BigDecimal) : BigDecimal = if(ret(i,j) == 1000.0) i*j*sqrt((pow(i,2) + pow (j,2)).toDouble)
    else if(ret(i,j) < 1000.0) search(i,j+1)
    else search(i+1,i+1)
  def main(args: Array[String]): Unit = print(search(1,1))
}

scala 입니다.

2017/07/31 23:51

S ReolSt

R로 작성했습니다.

for(a in 1:1000){
  for(b in 1:(1000-a)){
    c = 1000 - (a + b)
    if((a^2 + b^2 == c^2) & (a < b)) print(c(a, b, c))
  }
}

2017/08/01 11:19

arloe

두 식을 연립해서 a,b에 대한 식으로 놓고 풀었습니다. 정답은31875000

def func():
    for a in range(1,1000):
        for b in range(1,1000):
            result1 = 1000*(a+b)
            result2 = a*b +500000
            if result1 == result2:
                return (1000 - (a+b))*a*b

print(func())

2017/08/20 19:25

정인준

# python 3.6
# a + b + c = 1000, a^2 + b^2 = c^2 --> a^2 + b^2 = (1000 - (a+b))^2, where a < b < c
sol = [(a, b) for a in range(1, 1000) for b in range(1, 1000) if a**2 + b**2 == (1000 - (a + b))**2 and a < b]

a = sol[0][0]
b = sol[0][1]
c = 1000 - (a + b)
print(a * b * c)
# ans: 31875000

2017/09/05 13:48

mohenjo

문제 레벨에 비해 구현 자체는 편이한 난이도 같네요.. 코드를 최대한 축약하는게 관건인가 싶기도 한데, 제 코드는 비교적 긴 것 같습니다. 어차피 if문으로 a+b+c==1000을 만족하면서 피타고라스 수도 동시에 만족하는 경우의 수를 찾기 때문에 실행 속도가 느리거나 하는 문제는 없는 것 같네요. JAVA로 더 다른 차선책이 있으면 궁금하네요.

public class SpecialPythagoreanTriplet {
    public static void main(String[] args) {
        for(int c = 1; c < 1000; c++) {
            for(int b = 1; b < c; b++) {
                for(int a = 1; a < b; a++) {
                    if(a +b +c == 1000 && (a*a) +(b*b) == (c*c)) {
                        System.out.print("A:" +a +" " +"B:" +b +" " +"C:" +c);
                    }
                }
            }
        }
    }
}

2017/10/25 06:09

SungWook Jung

파이썬 3.6

def main(n):
    for a in range(1,n):
        for b in range(a+1,n):
            c = 1000 - (a+b)
            if a**2 + b**2 == c**2 and a+b+c == n:
                print("a = %d, b= %d, c = %d, a x b x c = %d" %(a,b,c, a*b*c))
                return

if __name__ == "__main__":
    n = int(input("n = "))
    main(n)

* 실행결과
n = 1000
a = 200, b= 375, c = 425, a x b x c = 31875000

2018/01/21 12:13

justbegin

b가 빗변일 때

b^2-c^2 = (b+c) * (b-c)=a^2 피타고라스의 정리

b-c = a^2 / b+c = a^2 / (1000-a)

b+c = 1000 - a

b-c와 b+c를 더해서

2b = 1000 - a + a**2/(1000-a)

b = (1000-a+a**2/(1000-a))/2

# 파이썬

for a in range(500):
    b = (1000-a+a**2/(1000-a))/2
    if b == int(b):
        b = int(b)
        c = 1000 - b - a
        print(a, b, c, a*b*c)

2018/02/01 23:03

olclocr

import math
def pythagorean(n):
    result = list()
    for c in range(math.ceil(n/3), math.ceil(n/2)):
        for b in range(math.ceil((n-c)/2),c+1):
            if c**2 == b**2 + (n-c-b)**2:
                result.append((n-b-c,b,c))
    return result


print(pythagorean(1000))
print(pythagorean(1000)[0][0]*pythagorean(1000)[0][1]*pythagorean(1000)[0][2])

2018/02/14 13:29

김동하

// a < b < c 이기 때문에 a는 332 보다 작거나 같다 (332 333 334)
    // b 는 a보다 크고 c보다는 작다. a < b < (1000-a)/2
    var ans = 1
    for(a <- 332 to 1 by -1){
        for(b <- a+1 until (1000-a)/2 -1 ){
            if(Math.pow(a,2) + Math.pow(b,2) == Math.pow(1000-a-b,2)){
                println(s"$a $b ${1000-a-b}")
                ans = a * b * (1000-a-b)            
            }
        }
    }
    println(ans)

2018/04/18 16:39

한강희

자바입니다. 포문을 더 줄일 조건이 있을 거 같은데 수학 상식이 부족하네요
```   public static void main(String[] args) throws Exception { ```{.java}

    for (int i=1; i<999; i++) {
        for (int j=i+1; j<999; j++) {
            if (i+j+Math.sqrt(i*i + j*j) == 1000)
                System.out.print("A:" +i +" " +"B:" +j +" " +"C:" + Math.sqrt(i*i + j*j));
        }
    }
}

}

2018/05/02 22:46

정몽준

Swift입니다.

func findNumber() -> Int {
    for a in 1...998 {
        for b in a...998 {
            let c = 1000 - a - b 
            if a*a + b*b == c*c {
                return a * b * c
            }
        }
    }
    return -1
}

print( findNumber() )

2018/05/03 03:15

졸린하마

def pita():
    lipita = []
    for n in range(1, 999):
        lipita += [sorted([n, x, 1000 - n - x]) for x in range(1, 999)]
    for check in lipita:
        if check[0]**2 + check[1]**2 == check[2]**2:
            return check[0]*check[1]*check[2]
print(pita())

Python 3입니다

2018/05/24 00:03

myyh2357

Python

n = 1000
for b in range(1, n-1):
    if (n**2 - 2 * n * b) % (2 * n - 2 * b) == 0:
        a = (n**2 - 2 * n * b) // (2 * n - 2 * b)
        c = 1000 - a - b
        if 0 < a < b < c:
            print(a, b, c, a*b*c)

2018/06/15 14:51

Taesoo Kim

for i in range(1,500):
    for j in range(i,500):
        if i+j+(i**2+j**2)**0.5 == 1000:
            print(i*j*((i**2+j**2)**0.5))
            break

2018/07/24 22:18

Creator

파이썬입니다.

for c in range(1,500):
    for a in range(c-1):
        for b in range(a-1):
            if a**2 + b**2 == c**2 and a+b+c == 1000:
                print(a,b,c)
            else : pass

2018/07/25 20:49

김준영

c언어
#include<stdio.h>

int main()
{
    int i,j,k;
    int p1, p2, p3;
    int result;
    for(i=1; i<1000; i++)
    {
        p1 = i * i;
        for(j=1; j<i; j++)
        {
            p2 = j * j;
            for(k=1; k<j; k++)
            {
                p3 = k * k;

                if((p1 == p2+p3) && (i+j+k == 1000))
                {
                    result = k * j * i;
                    printf("a =%d b =%d c = %d a2 = %d b2 = %d c2= %d result = %d \n", k, j, i, p3, p2, p1, result);

                }
            }
        }
    }
}

2018/08/07 09:54

이우경

for i in range(1, 1000):
    for j in range(1, i):
        for k in range(1, j):
                if pow(k,2)+pow(j,2)==pow(i, 2) and i+j+k == 1000:
                    print(i*j*k)

2018/08/10 12:58

이우경

for a in range(1,500):
  for b in range(a,500):
    for c in range(b,500):
      if a**2+b**2==c**2:
        if a+b+c==1000:
          print(a*b*c)

2018/08/14 16:22

S.H

package test;

public class test {
    public static void main(String[] args) {
        end: for (int i = 1; i < 501; i++)
            for (int j = 1; j < 501; j++)
                for (int k = 1; k < 501; k++)
                    if (i + j + k == 1000 && Math.pow(i, 2) + Math.pow(j, 2) == Math.pow(k, 2) && j > i) {
                        System.out.println(i * j * k);
                        break end;
                    }
    }
}

2018/08/26 16:06

김지훈

for x in range(1,1000):
    for y in range(1,1000):
        if x<y:
            if x*x+y*y==pow(1000-x-y,2):
                print(x*y*(1000-x-y))
                break

2018/09/07 10:30

전형진

clist = [i**2 for i in range(1000)]
for a in range(1,1000):
    for b in range(a+1,1000):
        c2 = a**2 + b**2
        if c2 in clist:
            c = clist.index(c2)
            #print(a, b, c)
            if a+b+c == 1000:
                print("answer is ", a, b, c)

답은 answer is 200 375 425

2018/10/14 20:08

phg98

#include <stdio.h>

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

    for (c = 1; c < 500; c++)
        for (b = 1; b < c; b++)
            for (a = 1;a < b; a++) {
                if (a*a+b*b==c*c && a+b+c==1000)
                    printf("%dx%dx%d = %d ", a, b, c, a*b*c);
            }

    return 0;
}

c언어

2018/10/16 10:58

HanRaaBong

result=0
for a in range (1, 500) :
    for b in range(2, 500) :
        for c in range(3, 500) :
            if(a>b) :
                break
            elif(a+b+c>1000):
                break
            elif(pow(a,2)+pow(b,2)==pow(c,2)) :
                print("a : "+ str(a) +" b: "+ str(b) +" c : "+str(c))
                if(a+b+c==1000):
                    print("chk")
                    result=a*b*c
                    break
        if(result!=0): break
    if(result!=0) : break

print(result)

2018/11/05 22:42

쨔이

'''
from random import randint

while 1:
    a = randint(1,1000)
    b = randint(1,1000)
    c = randint(1,1000)

    if a < b < c and a**2 + b**2 == c**2 and a + b + c == 1000:
        print(a*b*c)
        break
'''

for c in range(5, 1000):
    for b in range(1, c):
        for a in range(1, b):
            if a**2 + b**2 == c**2 and a + b + c == 1000:
                print(a, b, c, a*b*c)

2018/11/07 17:57

그사람 남한 볼 수 있어요

a1=0
b1=0
c1=0
for a in range(1,500):
    for b in range(1,500):
        for c in range(1,500):
            if a+b+c==1000:
                if a**2+b**2==c**2:
                    a1=a
                    b1=b
                    c1=c
print(a1*b1*c1)

2018/11/07 23:30

빅디펜스

for a in range(1, 1000):
    for b in range(1, 1000):
        c = 1000 - a - b
        if a * a + b * b == c * c and a < b < c:
            print(a * b * c)

2018/12/11 21:49

CPA Lee's classroom이회계사의 강의실

파이썬. 
입력받은 3세개의 숫자를 number라는 리스트에 추가시킨 후, 
리스트 요소들을 오름차순으로 정렬했을 때,
중간에 위치한 값을 찾았습니다. 

number = []
i = 1
while i < 4:
    num = int(input("%d번째 숫자를 입력하세요: " % i))
    number.append(num)
    i = i + 1
number.sort()
mid = int(len(number)/2)
print(number[mid])

2018/12/12 13:45

CPA Lee's classroom이회계사의 강의실

#include <stdio.h>

int main(void)
{
    int a, b, c;
    for(a=1;a<1000;a++)
        for (b = 1; b < 1000; b++)
            for (c = 1; c < 1000; c++)
                if(a*a + b*b == c*c && a+b+c==1000)
                    printf("%d %d %d %d\n",a,b,c,a*b*c);

    return 0;

}

2018/12/17 20:22

흐긴노노

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

    for (c = 1;; c++)
    {
        for (b = 1; b < c; b++)
        {
            for (a = 1; a < b; a++)
            {
                if (a + b + c == 1000 && (a * a + b * b == c * c))
                    printf("%d * %d * %d = %d", a, b, c, a * b * c);
            }
        }
    }
}

2018/12/30 14:41

서규섭

for i in range(1,1000) :
    for j in range(i, 1000-i) :
        if i**2 + j**2 == (1000-i-j)**2 :
            print(i*j*(1000-i-j))
            break

2019/01/01 19:18

lucky1to10

for a in range(1,1000):
    for b in range(a,1000):
        for c in range(b,1000):
            if a+b+c != 1000: continue
            if a**2 + b**2 == c**2: print(a,b,c, a*b*c)

a = 200 b = 375 c = 425 abc = 31875000

2019/01/03 16:55

판다네밥상

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Triplet();
        }
        static void Triplet()
        {
            for(int a = 1; a < 1000; a++)
            {
                for(int b = a + 1; b < 1000; b++)
                {
                    for(int c = b + 1; c < 1000; c++)
                    {
                        if (a + b + c == 1000 && a * a + b * b == c * c)
                        {
                            Console.WriteLine(a * b * c);
                        }
                    }
                }
            }
        }
    }
}

2019/01/04 11:26

bat

for a in range(1, 333):
    for b in range(a + 1, 665):
        c = 1000 - a - b
        if c ** 2 == (a ** 2) + (b ** 2) and a + b > c:
            print(a * b * c)

2019/01/06 19:49

농창

from math import sqrt

def Pytha(n):
    for a in range(1,int(n/2)):
        for b in range(a,int(n/2)):
            c = sqrt(a*a+b*b)
            if a+b+c == n:
                print(int(a*b*c))

2019/01/10 09:21

김영성

for a in range(1, 500):
    for b in range(a, 500):
        for c in range(b, 500):
            if a*a + b*b == c*c and a + b + c == 1000:
                print(a*b*c)

2019/01/18 12:03

D.H.

for a in range(1,500):
    for b in range(a,500):
        for c in range(b,500):
            if a**2 + b**2 == c**2 and a + b + c == 1000:
                print(a*b*c)

2019/02/01 17:52

손태호

for a in range(1, 500) :
    for b in range(a+1, 500) :
        for c in range(b+1, 500) :
            if  a**2 + b**2 == c**2 :
                if a + b + c == 1000 :
                    print(a*b*c)

파이썬입니다..

2019/02/14 14:14

임민주

for a in range(1,500):
    for b in range(a,500):
        for c in range(b,500):
            if (a*a+b*b==c*c) and a<b<c and a+b+c==1000:
                print(a*b*c)

2019/02/28 11:36

for a in range(1,501):
    for b in range(a,1001-a):
        if a**2+b**2==(1000-a-b)**2:
            print(a,b,1000-a-b,a*b*(1000-a-b))

2019/03/01 21:23

ykleeac

# Sol 1) brutal search
for i in range(100, 1000):
   for j in range(i + 1, 1000):
       for k in range(j + 1,1000):
           if i < j and j < k:
               if (i + j + k) == 1000:
                   if (i**2 + j**2) == k**2:
                       print('i, j, k: ', i, j, k)
                       print('i * j * k: ', i * j * k)

# Sol 2) By using mathematical algorithm
# a = m^2 - n^2, b = 2mn c = m^2 + n^2(m > n)
for m in range(2, 1000):
    for n in range(1, 1000):
        a = m**2 - n**2
        b = 2*m*n
        c = m**2 + n**2

        if (a + b + c == 1000) and \
           (a**2 + b**2  == c**2):
            if (a > 0 and b > 0) and c > 0:
                print("a, b, c: ", a, b, c)
                print("a * b * c: ", a * b * c)

2019/03/21 02:11

ChungGeol You

for a in range(1,1001):
    for b in range(1,1001):
       if (a**2+b**2==(1000-a-b)**2) & (a<b):
            print(a*b*(1000-a-b))              # 31875000

2019/04/26 01:54

cheer

for a in range(1,500):
    for b in range(a+1,500):
        for c in range(b+1,500):
            if a+b+c==1000 and a*a+b*b==c*c:
                print(a*b*c) #31,875,000
                exit

3중루프라 시간복잡도가 어마어마할것만 같아서, 원하는 값만 얻고 바로 종료하도록 하였읍니다. 그래도 완전탐색으로 하고 있어서 시간이 많이 걸리기는 하는군요ㅠ

2019/05/02 14:27

암살자까마귀

print([a*b*c for a in range(1, 500) for b in range(a, 500) for c in range(b, 500) if a*a+b*b==c*c and a+b+c==1000])

2019/05/12 17:35

Hwaseong Nam

python 3.6

for c in range(334, 500):
    for b in range(round(500-c/2), c):
        a = 1000 - b - c
        if a**2 + b**2 == c**2:
            print(a*b*c)

2019/05/18 16:48

최상혁

Python 3.6

for a in range(1001): # 피타고라스의 수 중 a를 정하고
    for b in range(1001):# 피타고라스의 수 중 b를 정하고
        for c in range(1001):# 피타고라스의 수 중 마지막 c를 정하고
            if a*a + b*b = c*c:# 피타고라스의 수가 성립하는지 확인하고
                if a + b + c = 0: # a + b + c 가 1000 이면
                    print(a*b*c) # a * b * c 를 출력한다.

Made by GPS

2019/05/20 21:36

Firelight

for a in range(1, 500):
    for b in range(a, 500):
        c = 1000 - (a + b)
        if a**2 + b**2 == c**2:
            print(a * b * c)

2019/05/21 17:42

messi

for m in range(1, 1000) :
    for n in range(1, m) :
        a = m**2 - n**2; b = 2*m*n; c = m**2 + n**2
        if a + b + c == 1000 :
            print(a * b * c)

2019/07/11 15:18

조현우

import random as rd
Pythagorean = dict(zip(['a','b','c','a*b*c'],[0]*4))
while True:
    a = rd.randint(1,1000)
    b = rd.randint(1,1000)
    c = 1000 - a - b
    if a**2 + b**2 == c**2 and a < b < c and a + b > c:
        Pythagorean['a'] = a
        Pythagorean['b'] = b
        Pythagorean['c'] = c
        Pythagorean['a*b*c'] = a*b*c
        break
print(Pythagorean)

2019/07/28 21:44

apriori

python 3.7

isbreak = 0
for c in range(334, 500): # (a+b+c)/3 < c < a+b
    for b in range(c-1, (499-c//2), -1): # (a+b)/2 < b < c
        a = 1000 - b - c
        if a**2 + b**2 - c**2 == 0:
            print(a*b*c)
            isbreak = 1
            break
    if isbreak == 1: break

2019/07/29 13:56

AY

for a in range(1,500,1):
    for b in range(a,500,1):
        for c in range(b,500,1):
            if a*a+b*b==c*c and a+b+c==1000:
                print(a*b*c)


2019/08/06 08:45

박재욱

답 : a, b, c = 200,375,425, a b c = 31875000

    for(int a = 1; a<1000; a++) {
            for(int b=a+1; b<1000; b++) {
                for(int c=b+1; c<1000; c++) {
                    if(a*a + b*b == c*c &&
                        a+b+c == 1000) {
                        System.out.println(a+","+b+","+c);
                        System.out.println(a*b*c);
                    }   
                }
            }
        }

2019/09/30 19:38

yeeun shim

for a in range(1,1001):
    for b in range(1,1001-a):
        for c in range(1,1001-(a+b)):
            if a**2+b**2==c**2 and a+b+c==1000 and a<b<c :
                print("a : {}, b : {}, c : {}, a*b*c = {}".format(a,b,c,a*b*c))

2019/10/07 21:01

semipooh

for a in range(1,1001):
    for b in range(1,1001-a):
        for c in range(1,1001-(a+b)):
            if a**2+b**2==c**2 and a+b+c==1000 and a<b<c :
                print("a : {}, b : {}, c : {}, a*b*c = {}".format(a,b,c,a*b*c))

2019/10/07 21:01

semipooh

import math

for a in range(1,500):
    for b in range(a+1,500):
        c = math.sqrt(a*a + b*b)
        if (c.is_integer()) & (a + b + c == 1000) :
            print(a)
            print(b)
            print(c)
            print(a*b*c)

2019/10/10 15:03

김민규

for a in range(1, 1000):
    for b in range(1, 1000 - a):

        c = 1000 - (a + b)
        if (a**2 + b**2 == c**2) & (a < b < c):

            print(a, b, c)

2019/10/22 17:57

Lim_decoy

for a in range(1,500):
    for b in range(a,500):
        c=a**2+b**2
        root_c=c**(1/2)
        if a+b+root_c==1000:
            print(a,b,root_c,a*b*c)

2019/10/26 01:44

생선집알바

public class SpecialPythagoreanTriplet {

    public static void main(String[] args) {
        for(int i = 1; i<999; i++) {
            for(int j=1; j<1000-i; j++) {
                for(int k=1; k<=1000-i-j; k++) {
                    if(i+j+k==1000) {
                    if(i*i + j*j == k*k) {
                        System.out.println(i*j*k);
                    }
                }
                }
            }
        }
    }
}

2019/11/08 16:12

big Ko

파이썬 3.7

for a in range(1,1000):
    for b in range(1,1000-a):
        c=1000-(a+b)
        if (a*a+b*b==c*c) & (a<b<c):
            print(a,b,c)
            print(a*b*c)

2019/11/14 17:47

data big

for i in range(1, 1000):
    for j in range(i + 1, 1000):
        for k in range(j + 1, 1000):
            print('a : %d, b : %d, c : %d' % (i, j, k))
            if i + j + k == 1000 and (k ** 2) == (i ** 2) + (j ** 2):
                print('a x b x c : ' + str(i * j * k))
                break

Python 으로 작성했는데, 뭔가 지극히 비효율적인 코드인 것 같습니다....

2019/11/25 16:26

DrKilling

파이썬입니다.

for a in range(1, 500):
  for b in range(a, 500):
    for c in range(b, 500):
      if (a**2 + b**2) == (c**2) and a+b+c == 1000:
        print('a*b*c: {}\na: {}, b: {}, c: {}, '.format(a*b*c,a,b,c))

2019/12/20 15:29

Sean

for a in range(1,333):
    for b in range(a,500):
        for c in range(b,500):
            if a+b+c==1000:
                if a**2+b**2==c**2:
                    print(a,b,c)
                    print(a*b*c)

2019/12/31 15:53

박시원

파이썬 3입니다. 적절한 범위 내에서 피타고라스 정리를 만족하는 값을 찾았습니다.

# x를 빗변으로, y는 가장 짧은 변으로 둔다

for x in range(334, 500):  # x는 가장 긴 변이고 삼각부등식 만족
    for y in range(1, (1000-x)//2):  # y는 가장 짧은 변
        if x**2 - y**2 == (1000-x-y)**2:
            print(x*y*(1000-x-y))

2020/01/21 20:52

우재용

for a in range(1, 1000):
    for b in range(1, 1000):
        for  c in range(1, 1000):
            if a + b + c == 1000 and (a**2)+(b**2)==(c**2):
                print(a*b*c)

2020/01/22 17:29

김희준

public class Pythagorean {
    public static void main(String[] args) {
        int a,b,c ;
        for(c=1;c<1000; c++) {
            for(b=1; b<c; b++) {
                for(a=1; a<b; a++) {
                    if((a+b+c == 1000) && (c*c==(a*a) + (b*b))){
                        System.out.println("a는 "+a);
                        System.out.println("b는 "+b);
                        System.out.println("c는 "+c);
                        System.out.println("a X b X c ="+(a*b*c));
                    }
                }
            }
        }
    }
}

2020/01/28 23:13

김강민

for a in range(1,1001):

    for b in range(1,1001):

        c = 1000 - (a+b)

        if  int(a**2) + int(b**2) == c**2  and (a<b<c):

            print (a*b*c)

        else: continue

2020/02/04 08:23

HyukHoon Kim

for a in range(1, 1000): for b in range(1, 1000): c = ((a2) + (b2))0.5 if a+b+c == 1000: print(abc)

2020/02/18 16:36

이국성

for a in range (1,1000):
for b in range (a+1,1000-a):
c=1000-a-b
if a**2+b**2==c**2:
if a<b and b<c:
print (a,b,c)
print (a*b*c)

2020/03/07 07:52

Buckshot

def pytr(n):
    result=[]
    for a in range(1, round(n/2)-1):
        for b in range(1, n-a):
            if a**2+b**2==(n-b-a)**2:
                result.append(a*b*(n-b-a))
    if result==[]:
        return "No integer solution."
    return list(set(result))
print(pytr(1000))

a+b+c=n 과 a^2+b^2=c^2를 만족하는 정수 a, b, c의 곱 a * b * c를 모두 구하는 프로그램입니다.

2020/03/08 12:59

Caplexian _

#Python

for a in range(1000):
    for b in range(1000):
        for c in range(1000):
            if (a**2+b**2==c**2) and (a<b<c) and (a+b+c==1000):
                print(f'a: {a}, b: {b}, c: {c}, Product: {a*b*c}')

#Answer: a: 200, b: 375, c: 425, Product: 31875000

2020/03/10 20:27

여종헌

for i in range(1,500):
    for j in range(1,500):
        k = (i**2 + j**2)**0.5
        if k - int(k) == 0:
            if i + j + k == 1000:
                print(int(i*j*k))
            break

2020/03/11 15:05

BlakeLee

for a in range(1, 1000):
    for b in range(a+1, 1000):
        c = 1000 - b - a
        if c > b > a:
            if c == pow(pow(a, 2) + pow(b, 2), 0.5):
                print(a, b, c, a*b*c)

2020/03/11 17:10

우제훈

for a in range(500):
    for b in range(500):
        if a+b+((a**2 + b**2)**0.5)==1000 and ((a**2 + b**2)**0.5)>a and b>a :
            print(int(a*b*((a**2 + b**2)**0.5)))
        else:
            pass

2020/03/28 22:03

di figo

for n in range(1000):
    n=n+1
    for m in range(1000):
        m=m+1
        for o in range(1000):
            o=o+1
            if n*n+m*m == o*o:
                if n+m+o ==1000:
                    print(n,m,o)
                else:
                    pass
            else:
                pass

2020/04/13 20:49

양양짹짹

int _tmain(int argc, _TCHAR* argv[])
{
    cout << "hello wordl" << endl;

    int nA, nB, nC;
    int nFin = 0;

    int nStart = GetTickCount();

    for(nC = 0 ; nC < 997 ; nC++)
    {
        for(nB = 0 ; nB < nC ; nB++)
        {
            for(nA = 0 ; nA < nC ; nA++)
            {
                if(nA >= nB)
                    break;

                if((nA + nB + nC) == 1000)
                {
                    if( ((nA*nA) + (nB*nB)) == (nC*nC) )
                    {
                        nFin = nA*nB*nC;
                        goto finished;
                    }
                }
            }
        }
    }

finished:
    int nStop = GetTickCount();
    int a = nStop - nStart;
    return 0;
}

2020/04/22 13:00

길고양이

public class Q131 {

    public static void main(String[] args) {
        for (int c = 0; c < 1000; c++) {
            for (int b = 0; b < 1000; b++) {
                for (int a = 0; a < 1000; a++) {
                    if (a * a + b * b == c * c && a + b + c == 1000 && a < b && b < c) {
                        System.out.println(a * b * c);
                    }
                }
            }
        }
    }
}

2020/05/05 14:25

Daniel Park

for a in range(1,1001):
    for b in range(a, 1001):
        for c in range(b, 1001):
            if a**2 + b**2 == c**2:
                if a+b+c == 1000:
                    print (a*b*c)
                    break

컴퓨터가 너무 아파해요.... ㅠㅠ

2020/05/06 05:20

아울

for a in range(1,500):
    for b in range(1,500):
        for c in range(1,500):
            if a*a+b*b == c*c:
                if a+b+c == 1000:
                    print(a*b*c)

작업시간이 오래걸리지만 답은 나옵니당,,,ㅎㅎ

2020/05/08 14:07

Money_Coding

total_break=True

for i in range(1,333) :
    for j in range(2,1000):
        for k in range(3,1001):
            if i*i+j*j==k*k and i<j and j<k and i+j+k==1000:
                print('%d %d %d' %(i,j,k))
                total_break=False
                break
        if total_break==False :
            break
    if total_break==False :
        break

2020/05/22 11:17

조윤재

반대로 구햇으면 더빨리 계산됐을것같네요

for c in range(1,1000):
    for b in range(1,500):
        for a in range(1,334):
            if a > b or a > c or b > c:
                break

            if a+b+c == 1000 and a**2 + b**2 == c**2:
                print("a는 {} b는 {} c는{}".format(a,b,c))
                print(a*b*c)

2020/05/29 20:48

진)파이썬마스터

a=1
while a<333:
    b=1
    while b<(1000-a)/2:
        c = 1000-a-b
        if(c*c==a*a+b*b):
            print(a,b,c)
        b+=1
    a+=1

2020/08/01 22:14

송인성

package Lv_1;

public class special_Pythagorean_Triplet {
    int ans;

    public void check() {
        for(int i=1; i<1000; i++) {
            for(int j=1; j<1000; j++) {
                for(int k=1; k<1000; k++) {
                    if((i*i)+(j*j)==(k*k)) {
                        if((i+j+k)==1000)
                            ans = i*j*k;
                    }
                }
            }
        }
    }

    public static void main(String args[]) {
        special_Pythagorean_Triplet spt = new special_Pythagorean_Triplet();
        spt.check();
        System.out.println(spt.ans);
    }
}

2020/08/04 09:29

김승현

#include <stdio.h>

int main(){

    int a,b,c,result;

    for(c=1;c<500;c++)
    {
        for(b=1;b<c;b++)
            {
                for(a=1;a<b;a++)
                {
                    if(c*c==b*b+a*a && a+b+c==1000)
                    {
                        result=a*b*c;
                        printf("%d",result);
                    }
                }
            }
    }
    return 0;
}

2020/09/18 22:48

June

static void pytha(int number) {

        for(int i=1; i<number; i++) {
            for(int j=1; j<number; j++) {
                for(int t=1; t<number; t++) {
                    if(i*i + j*j==t*t && i<j && i+j+t==number) {
                        System.out.printf("%d %d %d\n", i, j, t);
                        System.out.println(i*j*t);
                    }
                }
            }
        }
    }

    public static void main(String[] args) {

        pytha(1000);

    }

2020/10/03 17:54

B A

from itertools import combinations

class PitaFinder:
    def __init__(self):
        self.list = []
        self.comb = []
    def makeList(self):
        for i in range(1,501):
            self.list.append(i)
    def findPita(self):
        self.comb = list(combinations(self.list,3))
        for i in self.comb:
            if i[0]+i[1]+i[2]==1000 and i[0]**2+i[1]**2==i[2]**2:
                print (i,i[0]*i[1]*i[2])

a = PitaFinder()
a.makeList()
a.findPita()

2020/10/12 21:01

footsize

package dojang;

public class Pythagoreantriplet {

public static void main(String[] args) {
    for(int a=1;a<1000;a++) {
        for(int b=a+1;b<1000;b++ ) {
            for(int c=b+1;c<1000;c++) {
                if(a+b+c==1000&&(a*a)+(b*b)==c*c) {
                    System.out.println(a*b*c);
                }
            } 
        }
    }

}

}

2020/10/26 23:58

SIA

for a in range(500):
    for b in range(a+1,500):        
        if a**2+b**2 == (1000-a-b)**2:
            print(a*b*(1000-a-b))

2020/11/03 09:55

aryagaon

num = 500
result = []
for a in range(1, num):
    for b in range(1,num):
        for c in range(1, num):
            if (a < b < c) and (c**2 == a**2 + b**2) :
                if sum([a,b,c]) == 1000:
                    result.append([a,b,c])

print(result)

2020/11/16 09:08

DSHIN

for i in range(1,999,1):

  for j in range(i+1,1000,1):

    for l in range(j+1,1001,1):

      if i+j+l==1000 and (i*i+j*j==l*l):

        print("{0}, {1}, {2} is foude".format(i,j,l))

2020/11/28 15:54

전준혁

[(a,b,c) for a in range(1,996) for b in range(a+1,997) for c in range(b+1,998) if a+b+c ==1000 and a**2+b**2 ==c**2]

2020/12/23 18:22

hankyu

c=5
k="false"

while(1):
  for a in range(1,c):
    for b in range(a+1,c):
      if b == ( (c**2)-(a**2) )**(1/2) and a+b+c==1000:

        print(a*b*c)
        k="true"
        break

  c+=1

  if k=="true":
    break

2020/12/23 23:06

장래희망파이썬마스터

for a in range(1, 1001):
    for b in range(a + 1, 1001):
        c = 1000 - a - b
        if c <= 0:
            break
        if a ** 2 + b ** 2 == c ** 2:
            print("a = {}, b = {}, c = {}".format(a, b, c))

2021/01/07 15:34

코딩뚜

for i in range(1, 334):
    for j in range(i + 2, 999 - 2 * i):
        if j*j - i*i == pow(1000 - i - j, 2):
            a = i
            b = 1000 - i - j
            c = j
            break
print(a, b, c)#200, 375, 425
print(a*b*c)

python 3.9.1

2021/02/03 19:44

김민수

break_point = True
for c in range(500, 0, -1):
    for b in range(1000-c,int((1000-c)/2), -1):
        for a in range(1000-c-b, 0, -1):
            if a + b + c == 1000 and (a*a + b*b) == c*c:
                print(a*b*c)
                break_point = False
                break
        if break_point == False :
            break
    if break_point == False :
            break

2021/02/04 15:34

asdfa

for i in range(1,500):
    for k in range(1, 500):
        for j in range(1, 500):
            if i < k < j and i ** 2 + k ** 2 == j ** 2:
                if i + k + j == 1000:
                    print(i,k,j)
                    print(i*k*j)
                    break

2021/02/07 22:26

개촙오


for c in range(1,1000):
    for b in range(1,c):
        for a in range(1,b):
            if a**2 + b**2 == c**2 and a+b+c == 1000:
                print(a*b*c)

2021/02/08 16:51

서해원

for a in range(1,500):
    for b in range(1,500):
        for c in range(1,500):
            if a**2 + b**2 == c**2 :
                if a + b + c == 1000:
                    print(a*b*c)

문제는 쉬운데 반복문이 많다보니 연산 시간이 오래 걸리네요. 범위를 잘 정하는것도 중요하지 싶습니다.

2021/02/27 10:27

최우진

for a in range(1, 500):
    for b in range(a+1, 500):
        c = 1000-a-b
        if a**2 + b**2 == c**2:
            print(a, b, c, ':', a*b*c)
            exit()

처음엔 3개의 for문을 사용했는데 윗분 말씀처럼 1000을 범위로 하여 3개의 for문을 사용하면 계산시간이 많이 걸립니다 그래서 for문을 줄이고 각변의 범위값을 줄이고 값은 하나만 있으니 발견하면 프로그램을 바로 종료하게 하였습니다 첫번째 답인 예강효빠님의 범위계산 방법을 보고 아....나도 문제를 보고 이분처럼 생각하고 접근하면 좋겠다는 생각했답니다

2021/03/26 21:57

잘해보자

Python입니다.

>>> def pythagorean_number(a, b, c):
...     return a**2 + b**2 == c**2
...
>>> pythagorean_number(3, 4, 5)
True
>>> def f():
...     for a in range(1, 500):
...         for b in range(a + 1, 500):
...             c = 1000 - (a + b)
...             if pythagorean_number(a, b, c):
...                 return a * b * c
...
>>> f()
31875000

range() 범위

2021/04/11 18:21

최용

for a in range(1,500):
  for b in range(a,500):
      c= 1000-a-b
      if a*a+b*b==c*c:
          print(a*b*c)
          print(a,b,c)

사실 처음에는 범위 지정해야한다는 생각도 못했는데 풀이를 보고 많이 배웠네요. 계산의 효율성을 어떻게 높일 수 있는지 고민하게 해주는 문제인 것 같습니다.

2021/05/09 21:35

ss2663

N=1000
for a in range(int(N/3)):
    for b in range(a+1,N):
        c=N-a-b
        if a**2+b**2==c**2:
            print(a*b*c)

2021/06/18 13:27

가을아침

for a in range(1,500):
  for b in range(1,500):
    for c in range(1,500):
      if a**2+b**2==c**2 and a+b+c == 1000 and a<b<c:
          print(a*b*c)

2021/06/23 11:55

inkuk ju

def fuc():
    for a in range(1, 1001):
        for b in range(1, 1001):
            c =1000 - b - a
            if (a ** 2) + (b ** 2) == c ** 2 and b > a:
                return a * b * c


print(fuc())

2021/07/06 19:04

김준규

#codingdojing_special pythagorean triplet

# a = 1000 - b -c
# a + b > c 이므로, c는 500 미만의 값
# a**2 + b** 2 = c**2
# a < b < c

resultList = []

for c in range(1, 500): #1~500
    for a in range(1, 1001-c): #a+b는 고정 c = 1000-(a+b)
        b = 1000 - a- c        #a< b< c

        if a < b and a**2 + b**2 == c**2:
            resultList.append((a,b,c))
            print(a*b*c)

print(resultList) #[(200, 375, 425)]

# a = 200, b = 375, c = 425
# abc = 31875000

2021/07/11 19:59

Jaeman Lee

파이썬 3.8.10으로 작성되었습니다. 그냥 단순 무식하게 찾을 때까지 모든 경우의 수를 다 돌려 봤습니다. 대략 20만번 쯤 반복한 후에 결과값이 나옵니다. (375, 200, 425)가 정답입니다.

import random


def choice():
    list_sample = list(range(0, 1000))
    a = random.choice(list_sample)
    b = random.choice(range(0, 1000 - a))
    c = 1000 - a - b

    return (a, b, c)


def is_pitagoras(val):
    a, b, c = val
    return a**2 + b**2 != c**2


def main():
    global value
    value = choice()
    i = 0
    while is_pitagoras(value):

        value = choice()
        i += 1

    print(value)


if __name__ == '__main__':
    main()

2021/07/26 14:56

baek choi

for c in range(1, 500):
    for b in range(1, c-1):
        for a in range(1, b-1):
            if (a*a)+(b*b) == c*c and a+b+c == 1000:
                print(a*b*c)
                break

2021/08/16 16:58

서현준

for c in range(334,500) :
    for  a in range(1,250):
        b = 1000 - a -c 
        if a**2 + b**2 == c**2:
            print(a*b*c)

2021/08/23 17:40

//python

for a in range(1,500):
    for b in range(a+1,500):
        if a**2 + b**2 == (1000-a-b)**2:
            print(a,b,1000-a-b)
            print(a*b*(1000-a-b))

2021/09/17 17:45

ninanino

public static void main(String[] args) {
        for (int i = 0; i < 1000; i++) {
            for (int j = 0; j < 1000; j++) {
                for (int k = 0; k < 1000; k++) {
                    if (i + j + k == 1000 && (i * i) + (j * j) == (k * k) && ((i < j && j < k))) {
                        System.out.println(i + " " + j + " " + k);
                        System.out.println(i * j * k);
                    }
                }
            }
        }
    }

2021/10/24 01:59

박대현

import math

for a in range(1,1000)    :
    for b in range(a+1,1000)    :
        for c in range(a+2,1000) :
            if a**2+b**2==c**2 and a+b+c == 1000 :
                print(a,b,c)

2021/12/16 19:09

양캠부부

for a in range (1000):
    for b in range(a+1,1000):
        for c in range(b+1,1000):
            if a*a+b*b-c*c == 0 and a+b+c ==1000:
                print(a*b*c)

2022/01/24 10:46

로만가

// Rust // a + b + c = limit, a < b < c 조건을 활용하면 a^2+b^2==c^2를 검사할 때 loop횟수를 줄일수 있습니다 // a가 갈 수 있는 최대값은 limit/3 - 1 (integer division은 반내림, limit이 3으로 나누어지든 않든 마찬가지) // b가 갈 수 있는 범위는 a+1부터, (limit-a)/2가 2로 나누어지면 (limit-a)/2-1, 나누어지지 않으면 (limit-a)/2까지입니다 // 이렇게 루프를 돌리면 c = limit - a - b는 항상 c > b > a를 만족합니다

fn main() {

let limit: u32 = 1000;
if let Some((a, b, c)) = pythagorean_triplet(limit) {
    println!("{} x {} x {} => {}", a, b, c, a * b * c);
}

}

fn pythagorean_triplet(limit: u32) -> Option<(u32, u32, u32)> {

// integer division rounds down to the nearest integer
for a in 1..(limit/3) {

    let b_limit = (limit - a) / 2 + if (limit - a) % 2 == 0 {
                                                             0 } else {
                                                             1 };
    for b in (a+1)..b_limit {
        if a.pow(2) + b.pow(2) == (limit - a - b).pow(2) {
            return Some((a, b, limit-a-b));
        }
    }
}
None

}

2022/01/26 12:45

JW KIM

#Special Pythagorean triplet

for a in range(1, 1000):
    for b in range(1, 1000):
        for c in range(1, 1000):
            if a * a +  b * b == c * c and a < b < c and a + b + c == 1000:
                print(a*b*c)

2022/02/10 19:28

오원석

for a in range(100,500):
    for b in range(a,500):
        for c in range(b,500):
            if a+b+c==1000:
                if a**2+b**2==c**2:
                    print(a*b*c)

2022/03/07 11:26

mintou

using System;
using System.Collections.Generic;

namespace FirstProgram
{
    class Program
    {
        static void Main(string[] args)
        {
            int result = 0;

            for(int i=1; i<500; i++)
            {
                for(int j=1; j<500; j++)
                {
                    for(int k=1; k<500; k++)
                    {
                        if(i + j + k == 1000 && i*i + j*j == k*k)
                        {
                            result = i * j * k;
                        }
                    }
                }
            }

            Console.WriteLine(result);
        }
    }
}

C#

2022/03/11 19:51

rah_9

for a in range(1,1000):
    for b in range(a,1000):
        c=1000-a-b
        if a**2+b**2==c**2:
            print(a*b*c)

2022/04/08 20:12

thank

def pytha(a,b,c):
    if a < b < c:
        return True if a**2 + b**2 == c**2 else False
for a in range (1,500):
    for b in range(1,500):
        c = 1000-a-b
        if a + b + c == 1000:
            if pytha(a,b,c):
                print(a*b*c)

2022/04/24 19:17

고구마츄

package com.algorithm.algorithmpractice.dojang;

public class Oiler {
    public static void main(String[] args) {
        for(int a = 0; a < 500; a++){
            for(int b = 0; b < 500; b++){
                for(int c = 0; c < 500; c++){
                    if(a+b+c == 1000 && Math.pow(a, 2) + Math.pow(b, 2) == Math.pow(c, 2)){
                        System.out.println(a * b * c);
                        break;
                    }
                }
            }
        }
    }
}

고등학교 수학으로 푸려고했는데 까먹어서 도저히 그렇게 풀수가 없어서 컴퓨터 갈굼. 

2022/05/02 23:44

inkuk ju

k=[]
for a in range(1,334):
  b=a
  while (1000-a-b)>b:
    if a**2+b**2==(1000-a-b)**2:
      k.append(a)
      k.append(b)
      k.append(1000-a-b)
      break
    b+=1
print(k)
print(200*375*425)

31875000이 나오네요

2022/06/12 13:36

Jack Maker


for a in range(1, 34):
    for b in range(a, 34):
        for c in range(b, 34):
            if c*c == a*a + b*b & c*c + b*b + a*a == 1000:
                print(a, b, c)

2022/07/14 11:21

송동준

[ a*b*(1000-a-b) for a in range(500) for b in range(500) if (a*a + b*b == (1000-a-b)**2) & (a<b)]

2022/08/06 00:18

김보라

python

def pytha():
    for a in range(1,1000):
        for b in range(a,1000):
            for c in range(b,1000):
                if a**2 + b**2 == c**2 and a + b + c == 1000:
                    return(a*b*c) #return과 동시에 함수가 종료되므로 다중 반복문 탈출

print(pytha())

2022/08/24 10:24

세라

  1. for문으로 3개의 인자값을 활용.
  2. 해당인자값이 반복될때, 뒤의 숫자는 앞의 숫자의 +1부터 시작임. 때문에 뒤의 숫자가 항상 클 수 밖에 없음.

    private static int pythagoras() {

      int num1=0;
      int num2=0; 
      int num3=0;
    
      for(int i=1; i<1000; i++) {
          for(int j=i+1; j<1000; j++) {
              for(int k=j+1; k<1000; k++) {
                  if(i*i+j*j == k*k && i+j+k == 1000) {
                      num1 = i;
                      num2 = j;
                      num3 = k;
                  }
              }
          }
      }
    
      System.out.println("num1:" + num1 + " " + "num2:" + num2 + " " + "num3:" + num3);
      return num1*num2*num3;
    

    }

2022/09/15 17:04

서영재

for a in range(1000) :
    for b in range(1000) :
        for c in range(1000) :
            if a + b + c == 1000 and a**2 + b**2 == c**2 :
                print(a*b*c)

31875000

2022/11/07 16:28

ㅇㅇ

for a in range(1,1000):
   for b in range(1,1000):
      c = 1000 - a - b
      if a**2 + b**2 == c**2 and a < b < c:
         print(a,b,c,a+b+c,a*b*c)

2023/08/11 17:55

siu yoon

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            for (int a = 1; a < 334; a++)
            {
                for (int b = 501-a; b < 500; b++)
                {
                    int c = 1000 - a - b;
                    if(c >= b && a*a + b*b == c*c)
                        Console.WriteLine("{0}, {1}, {2}, {3}",a,b,c,a*b*c);
                }
            }
        }
    }
}

2023/10/20 19:38

insperChoi

def pitagoras() :
    results = []
    for c in range(1,1000):
        for b in range(1,999):
            a = 1000 - b - c
            if a**2 + b**2 == c**2 :
                return f"a:{a},b:{b},c:{c}, a x b x c = {a*b*c:,}"

2024/12/13 06:22

Orange

for a in range(1, 1000):
    for b in range(a+1, 1000-a):
        c = 1000 - a - b
        if b < c and a*a + b*b == c*c:
            print(a, b, c)
            break

2026/01/02 17:53

김성훈

from math import prod

result = [
    (a, b, c)
    for a in range(1, 1000)
    for b in range(a, 1000)
    for c in [1000 - a - b]
    if a*a + b*b == c*c
    ]

print(prod(result[0]))

2026/05/14 16:44

우영재

목록으로