情報基礎Ⅱ/基礎工学Ⅲ (第13回) 月曜4限 担当:北川 晃 例題:真理値表 論理式 a b c の真理値表を与えるプログラムを作れ. 真理値表: 変数の取り得るすべての値の組み合わせに対し, 論理式がとる値を表にしたもの. 例:a∧bの真理値表 a b ab 真 真 偽 偽 真 偽 真 偽 真 偽 偽 偽 真理値表:出力例 要素の数を 指定しない 真理値表:プログラム例 Dim v() As Boolean = {True, False} 配列に初期値を 代入する場合 Console.WriteLine(" a b c result") Console.WriteLine("------------------------------------") For i As Integer = 0 To 1 For j As Integer = 0 To 1 For k As Integer = 0 To 1 Console.WriteLine(" {0,8} {1,8} {2,8} {3,8}", _ v(i), v(j), v(k), v(i) And Not (v(j) Or v(k))) Next Next a bc a, b, c Next 例題:エラトステネスのふるい n までの素数を求めて出力するプログラムを作れ. アルゴリズム:エラトステネスのふるい •2の倍数(2自身を除く)に全部印をつける. •3の倍数(3自身を除く)に全部印をつける. •5の倍数(5自身を除く)に全部印をつける. •… • n まで全部の倍数に印をつけたとき, 印がつかないで残っている数は, どの数の倍数でもないから素数である. 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17… エラトステネスのふるい:アルゴリズム • 上限となる整数nを読み込む. • i=3以上の奇数について調べる. • c(i)という配列(印をつけるのに用いる)のすべての 成分に,「真」を代入する. • エラトステネスのふるいの方法で, 各整数の倍数に印をつける. • 印なしを「真」,印ありを「偽」として区別する. • ふるいをかける整数の最初の値を, 配列成分p(m)に代入する. • これをnまで繰り返し,最後に配列p(m)を書き出す. エラトステネスのふるい:出力例 エラトステネスのふるい:プログラム例 Console.Title = "nまでの素数の探索" Dim c(10000) As Boolean Dim i, j, m, n, p(10000) As Integer, l As Integer = 1 Console.WriteLine("上限となる値を入力して下さい") Console.Write("n=") n = Console.ReadLine() 'c(i)は素数かどうかのチェック(=Trueは素数,=Falseは素数でない) 'mは素数列の項番号 '素数列の初項 m = 1 p(m) = 2 '3以上の奇数について,すべてに一旦,素数のチェックを入れる(True) For i = 3 To n Step 2 c(i) = True Next エラトステネスのふるい:プログラム例(つづき) For i = 3 To n Step 2 ‘iのチェック(c(i))が入っていない(True)場合 If c(i) = True Then ‘素数の項数mを1増やし,iを素数としてp(m)に書き出す. m = m + 1 p(m) = i 'iとそれ以降の倍数のチェック(c(i))を入れる(False) For j = i To n Step i c(j) = False Next End If Next For i = 1 To m If (i = m) Or (i Mod 10 = 0) Then Console.WriteLine("{0,5}", p(i)) Else Console.Write("{0,5}", p(i)) End If Next
© Copyright 2024 ExpyDoc