さまざまな言語で数値計算
Only Do What Only You Can Do
100未満の3の倍数の和
VBScript
Option Explicit Dim sum: sum = 0 Dim i For i = 1 To 99 If i Mod 3 = 0 Then sum = sum + i End If Next WScript.Echo sum
Z:\>cscript //nologo 0105.vbs 1683
JScript
var sum = 0; for (var i = 1; i < 100; i++) { if (i % 3 == 0) { sum += i; } } WScript.Echo(sum);
Z:\>cscript //nologo 0105.js 1683
PowerShell
$sum = 0 foreach ($i in 1..99) { if ($i % 3 -eq 0) { $sum += $i } } Write-Host $sum $sum = 0 foreach ($i in 1..99) { $sum += if ($i % 3 -eq 0) {$i} else {0} } Write-Host $sum
Z:\>powershell -file 0105.ps1 1683 1683
Perl
use strict; use warnings; my $sum = 0; for (1..99) { if ($_ % 3 == 0) { $sum += $_; } } print "$sum\n";
Z:\>perl 0105.pl 1683
PHP
<?php error_reporting(E_NOTICE); $sum = 0; foreach (range(1, 99) as $i) { if ($i % 3 == 0) { $sum += $i; } } echo "$sum\n"; ?>
Z:\>php 0105.php 1683
Python
sum = 0 for i in range(1, 100): if i % 3 == 0: sum += i print sum sum = 0 for i in range(1, 100): sum += i if i % 3 == 0 else 0 print sum
Z:\>python 0105.py 1683 1683
Ruby
sum = 0 (1..99).each do |i| if i % 3 == 0 sum += i end end puts sum
Z:\>ruby 0105.rb 1683
Groovy
Pascal
Program Pas0105(arg); var i:integer; sum:integer = 0; begin for i := 1 to 99 do begin if (i mod 3 = 0) then sum := sum + i; end; writeln(sum); end.
Z:\>fpc Pas0105.pp -v0 Free Pascal Compiler version 2.6.2 [2013/02/12] for i386 Copyright (c) 1993-2012 by Florian Klaempfl and others Z:\>Pas0105 1683
Ada
VB.NET
Module VB0105 Public Sub Main() Dim sum As Integer = 0 For i As Integer = 1 To 99 If i Mod 3 = 0 Then sum += i End If Next Console.WriteLine(sum) End Sub End Module
Z:\>vbc -nologo VB0105.vb Z:\>VB0105 1683
C#
public class CS0105 { public static void Main() { int sum = 0; for (int i = 1; i < 100; i++) { if (i % 3 == 0) { sum += i; } } System.Console.WriteLine(sum); } }
Z:\>csc -nologo CS0105.cs Z:\>CS0105 1683
Java
public class Java0105 { public static void main(String []args) { int sum = 0; for (int i = 1; i < 100; i++) { if (i % 3 == 0) { sum += i; } } System.out.println(sum); } }
Z:\>javac Java0105.java Z:\>java Java0105 1683
C++
#include <iostream.h> int main() { int sum = 0; for (int i = 1; i < 100; i++) { if (i % 3 == 0) { sum += i; } } cout << sum << endl;; return 0; }
Z:\>bcc32 CP0105.cpp Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland CP0105.cpp: Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Z:\>CP0105 1683
Objective-C
#import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { int sum = 0; int i; for (i = 1; i < 100; i++) { if (i % 3 == 0) { sum += i; } } printf("%d\n", sum); return 0; }
Compiling the source code.... $gcc `gnustep-config --objc-flags` -L/usr/GNUstep/System/Library/Libraries -lgnustep-base main.m -o demo -lm -pthread -lgmpxx -lreadline 2>&1 Executing the program.... $demo 1683
D
Go
Scala
object Scala0105 { def main(args:Array[String]) { var sum = 0 for (i <- 1 to 99) { if (i % 3 == 0) { sum += i } } println(sum) } }
Z:\>scala Scala0105.scala 1683
F#
module Fs0105 let mutable sum = 0 for i in [1..99] do if (i % 3 = 0) then sum <- sum + i printfn "%d" sum exit 0
Z:\>fsi Fs0105.fs --nologo --quiet 1683
Clojure
(defn total [n] (if (zero? n) 0 (if (= (mod n 3) 0) (+' n (total (dec n))) (total (dec n))))) (println (total 99))
Z:\>java -cp C:\ProgramFiles\clojure-1.5.1\clojure-1.5.1.jar clojure.main Clj0105.clj 1683
Haskell
total 0 = 0 total i = if i `mod` 3 == 0 then i + total (i - 1) else total (i - 1) main = print (total 99)
Z:\>runghc Hs0105.hs 1683