「3の100乗を19で割ったあまりは?」を4通りの方法で計算してみました。(^_^;
はてなブックマークで『「3の100乗を19で割ったあまりは?」を4通りの方法で計算する』という記事を見かけたので、これを4通りの方法、こちらの場合は4つのプログラム言語(Python,Ruby,Java,VB)で計算してみました。(^_^;
これって、「方法5」に当たるのでしょうか。「方法1:地道に計算する」があるんだったら、「方法5:プログラムを作って計算する」もあっていいんじゃなかな。(^_^;
やっぱり、PythonとRubyは楽でいいですね。VBもJavaよりは少し楽かな。o(^-^)o
ちなみに、Pythonは、「%( )」で、Rubyは、「%[ ]」の違いに注意です。
また、VBのBigInteger構造体は.NET Framework 4より使用できるようになった構造体で、使用する場合は、System.Numerics.dllへの参照を追加する必要があり、vbc.exe コマンドで直接コンパイルする場合は /r:System.Numerics.dll オプションを指定します。
● ModPow3_100_19.py
# coding: UTF-8 # ModPow3_100_19.py print("%s mod 19 = %s"%(3**100,3**100%19))
● ModPow3_100_19.rb
#! ruby -Ks # ModPow3_100_19.rb print "%s mod 19 = %s"%[3**100,3**100%19]
● ModPow3_100_19.java
/* * ModPow3_100_19.java */ import java.math.*; class ModPow3_100_19 { public static void main(String[] args) { BigInteger m = BigInteger.valueOf(3).pow(100); BigInteger n = new BigInteger("3").modPow(new BigInteger("100"),new BigInteger("19")); System.out.println(m+" mod 19 = "+n); } }
● ModPow3_100_19.vb
' vbc.exe ModPow3_100_19.vb /r:System.Numerics.dll Imports System Imports System.Numerics Module Module1 Sub Main() Dim m as BigInteger = BigInteger.pow(3,100) Dim n as BigInteger = BigInteger.ModPow(3,100,19) Console.WriteLine("{0} mod 19 = {1}",m, n) 'Console.WriteLine("{0} mod 19 = {1}",m, m mod 19) End Sub End Module
●実行結果
515377520732011331036461129765621272702107522001 mod 19 = 16
※参考URL
●多倍長整数型 (System.Numerics.BigInteger) - Programming/.NET Framework/数学関数・高度な数値型 - 総武ソフトウェア推進所
●[C#]多倍長整数 System.Numerics.BigInteger を使ってみた
IDE を使う場合はプロジェクト名を右クリックして参照設定を選びます。csc.exe コマンドで直接コンパイルする場合は /r:System.Numerics.dll オプションを指定します。
●知恵袋で見つけた「自然数を順番に並べた数」の問題をJavaで解いてみた。
- 作者: 加藤和也
- 出版社/メーカー: 丸善出版
- 発売日: 2012/11/27
- メディア: 単行本(ソフトカバー)
- 購入: 7人 クリック: 187回
- この商品を含むブログ (8件) を見る