Sum square difference
(1+2+3 … 100)^2 – (1^2+2^2+3^3 … 100^2) 이다.
제곱은 a^2 == a*a 이니 덧셈을 다 하고 for 문 끝나면 제곱해 주면 된다.
제곱 후 덧셈은 b = b + (b*b)하면 된다.
결국 for 문은 한번만 돌리면 된다 :/
package main import ( "fmt" "time" ) func main() { start := time.Now() var a, b, max int = 0, 0, 100 for i:=1; i<=max; i++ { a = a + i // a 는 덧셈 후 제곱 b = b + (i * i) // b 는 제곱 후 덧셈 } a = a * a fmt.Println("덧셈 후 제곱 : ", a) fmt.Println("제곱 후 덧셈 : ", b) fmt.Println("둘 의 차이 : ", a-b) fmt.Println(time.Since(start)) }
┌──(daleji㉿HACK)-[~] └─$ go run euler6.go 덧셈 후 제곱 : 25502500 제곱 후 덧셈 : 338350 둘 의 차이 : 25164150 31.8µs