最小公倍数と最大公約数

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
みっちょん

最小公倍数と最大公約数

#1

投稿記事 by みっちょん » 14年前

はじめまして
初歩過ぎることですが知恵を貸してください><

OSはwindowsXP
言語 c++
Microsoft visual c++ Express

二つの自然数から最小公倍数と最大公約数を求めるプログラムを作ろうとしてつくってみたものの
思うように進まずwebのサンプル等を参考にしてみてもだめでした

二つの自然数を入力し最小公倍数を求めようとするとエラーが出ます
Run-Time Check Failure #3 - the valiable "na" is being used without being initialized
と出ます

以下コード

コード:

#include <stdio.h>
void main()
{
	int a,b;
	int x,y;
	int na,nb = 0;

	printf("一つ目の自然数を入力してください -> ");
	scanf("%d",&a);
	while(a < 0)
	{
		printf("入力が不正です\n");
		printf("一つ目の自然数を入力してください -> ");
	    scanf("%d",&a);
	}

	printf("二つ目の自然数を入力してください -> ");
	scanf("%d",&b);
	while(b < 0)
	{
		printf("入力が不正です");
	    printf("二つ目の自然数を入力してください -> ");
		scanf("%d",&b);
	}

	if(a > b)
		x = a;
		y = b;

	if(b > a)
		x = b;
		y = a;

	while(a*na != b*nb)
	{
		if(a * na > b * nb)
			nb++;
		if(a * na < b * nb)
			na++;
	}
	

	printf("%dと%dの最小公倍数は%dです",a,b,na*a);

	getchar();
	getchar();
}
お願いします

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: 最小公倍数と最大公約数

#2

投稿記事 by softya(ソフト屋) » 14年前

これは、C++ではなくC言語だと思いますが自分の勉強されている言語をちゃんと把握されるべきだと思います。
それとも本当はC言語風ではなくC++の書き方で書きたいのでしょうか?

で、まずエラーの件ですがnaが未初期化です。
>Run-Time Check Failure #3 - the valiable "na" is being used without being initialized
google翻訳。variable の打ち間違いは修正。
http://translate.google.co.jp/#en|ja|th ... nitialized

[補足]
他にも問題がありますが、まずここを直しましょう。

[追記]
その前に、みっちょんさんの考える最小公倍数と最大公約数の求め方を日本語で書いてみてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
lbfuvab
記事: 72
登録日時: 14年前

Re: 最小公倍数と最大公約数

#3

投稿記事 by lbfuvab » 14年前

見てるか分かりませんが、
nbを0で初期化するのは良くないと思いますよ。
naもnbも1で初期化するのが良いでしょう。

また、この方法は効率が悪いので「ユークリッドの互除法」でググれば幸せになれるかもしれません。

閉鎖

“C言語何でも質問掲示板” へ戻る