集中力なら売り切れたよ

プログラミングや、将棋などについて書きます。

ユークリッドの互除法のアルゴリズムを3つの言語で書いてみました

C++C#Visual Basicを使用してユークリッドの互除法で最大公約数を求めるプログラムを書いてみました。

ユークリッドの互除法 - Wikipedia

C++

#include <iostream>

int gcd(int x, int y)
{
    return y == 0 ? x : gcd(y, x % y);
}


int main(int argc, char* argv[])
{
    int x, y;

    std::cout << "整数を入力せよ> ";
    std::cin >> x;

    std::cout << "整数を入力せよ> ";
    std::cin >> y;

    std::cout << "最大公約数は" << gcd(x, y) << "です。" << std::endl;

    return 0;
}

C#

using System;
class Program
{
    static int gcd(int x, int y)
    {
        return y == 0 ? x : gcd(y, x % y);
    }

    static int Main(string[] args)
    {
        int x, y;
        string tmp;
        Console.Write("整数を入力せよ> ");
        tmp = Console.ReadLine();
        x = int.Parse(tmp);
        Console.Write("整数を入力せよ> ");
        tmp = Console.ReadLine();
        y = int.Parse(tmp);
        Console.WriteLine("最大公約数は{0}です。", gcd(x, y));
        return 0;
    }
}

Visual Basic

Module Program
    Function gcd(x As Integer, y As Integer) As Integer
        Return If(y = 0, x, gcd(y, x Mod y))
    End Function

    Function Main(args As String()) As Integer
        Dim x, y As Integer
        Dim tmp As String
        Console.Write("整数を入力せよ> ")
        tmp = Console.ReadLine()
        x = Integer.Parse(tmp)
        Console.Write("整数を入力せよ> ")
        tmp = Console.ReadLine()
        y = Integer.Parse(tmp)
        Console.WriteLine("最大公約数は{0}です。", gcd(x, y))
        Return 0
    End Function
End Module

Visual Basicには三項演算子の代わりにIf関数があります。