"血をもって書け。そうすればあなたは、血が精神だということを経験するだろう。"

Problem6

最初の10個の自然数について、その和の二乗と、二乗数の和は以下の通り。
1² + 2² + ... + 10² = 385
(1 + 2 + ... + 10)² = 3025

これらの数の差は 3025 - 385 = 2640 となる。

同様にして、最初の100個の自然数について和の二乗と二乗の和の差を求めよ。

Haskell

main= print $ (square $ sum [1..100])-(sum $ map square [1..100])
square x=x^2

C

#include<stdio.h>
int main(void){
  int i,a=0;
  for(i=1;i<=100;i++){
    a+=i;
  }
  a*=a;
  for(i=1;i<=100;i++){
    a-=i*i;
  }
  printf("%d\n",a);
}
25164150

なんか今までのCプログラムでFor文の境界条件間違ってる気がしてきた。