(1) プログラムの骨子を作るために必要な、 最小公倍数 や 最大公約数 の謎
-
大学入試のためのセンター試験では、 毎年 BASIC 言語によるプログラムの問題が出題されています。 平成20年は、 最小公倍数を求めるプログラミングの問題でした。


その理由を次に述べます。




大学入試のためのセンター試験では、 このような最大公約数の謎がヒントとして提出されていなかったので、 受験生にはかなりの難問であったのではないかと思います。
-
100 INPUT PROMPT "最大公約数を求めます。自然数を入力してください。": X
110 INPUT PROMPT "次に、もう1つ自然数を入力してください。": Y
120 IF X<Y THEN
130 LET Z=X
140 LET X=Y
150 LET Y=Z ! X ≧ Y になるように、X と Y の値を置き換えた
160 END IF
170 IF Y=0 THEN
180 PRINT " 最大公約数は "; X ;"です。"
190 GOTO 270
200 END IF
210 LET R=X
220 LET R=R-Y
230 IF R>=Y THEN GOTO 220 ! X を Y で割った余りを求めようとしている
240 LET X=Y
250 LET Y=R ! 順列 ( X の値, Y の値 ) を ( Y の値, R の値 ) で置き換えた
260 GOTO 170
270 END
-
#include
int gcd ( int x, int y );
int main ( )
{
int x, y;
int num;
printf ("最大公約数を求めます。\n");
printf ("自然数を入力してください。");
scanf ("%d", &x );
printf ("次の自然数を入力してください。");
scanf ("%d", &y );
num = gcd ( x, y );
printf ("%d と %d の最大公約数は %d です。\n", x, y, num);
return 0;
}
// 最大公約数を求める関数
int gcd ( int x, int y )
{
int r;
while ( ( r = x % y ) ! = 0 ) // % は余りを出力する。 0 になるまでは繰り返す
{
x = y;
y = r;
}
return y; // 何回かループして、 最後にたどりついた y の値が、最大公約数
}
-
100 INPUT PROMPT "最小公倍数を求めます。自然数を入力してください。": X
110 INPUT PROMPT "次に、もう1つ自然数を入力してください。": Y
120 IF X<Y THEN
130 LET Z=X
140 LET X=Y
150 LET Y=Z
160 END IF
165 LET T=X*Y
170 IF Y=0 THEN
180 PRINT "最小公倍数は "; T/X ;"です。"
190 GOTO 270
200 END IF
210 LET R=X
220 LET R=R-Y
230 IF R>=Y THEN GOTO 220
240 LET X=Y
250 LET Y=R
260 GOTO 170
270 END
-
#include
int lcm ( int x, int y );
int gcd ( int x, int y );
int main ( )
{
int x, y;
int num;
printf ("最小公倍数を求めます。\n");
printf ("自然数を入力してください。");
scanf ("%d", &x );
printf ("次の自然数を入力してください。");
scanf ("%d", &y );
num = lcm( x, y );
printf ("%d と %d の最小公倍数は %d です。\n", x, y, num);
return 0;
}
// 最小公倍数を求める関数
int lcm ( int x, int y )
{
return ( x * y / gcd ( x, y ) );
}
// 最大公約数を求める関数
int gcd ( int x, int y )
{
int r;
while ( ( r = x % y ) ! = 0 )
{
x = y;
y = r;
}
return y;
}
-
BASIC言語 は、 1つのメインプログラムだけで成り立つことが多いですが、 C言語 は、 メインプログラムの外で、 関数を作成し、 それをメインプログラムで利用することが多いようです。 BASIC言語 は、 古典的な一工場製法ですが、 C言語 は、 下請け工場で生産された部品の本工場組立て製法です。 したがって、 共同分担制作にはC言語のほうが便利そうです。
< コピー & ペースト 用 の窓 >
プログラミング へ戻る