最大公約数と最小公倍数を求めるプログラムの質問

このQ&Aのポイント
  • 2つの4ケタまでの自然数を入力して、最大公約数と最小公倍数を算出するプログラムExcelのVisual Basicを用いて作っています。
  • 4ケタの自然数の定義の仕方がおかしいのでしょうか?アドバイスお願いします<m(__)m>
  • 数値に何を入れても『4ケタまでの自然数を入れてください』になってしまいます。
回答を見る
  • ベストアンサー

最大公約数と最小公倍数を求めるプログラムの質問

2つの4ケタまでの自然数を入力して、最大公約数と最小公倍数を算出するプログラムExcelのVisual Basicを用いて作っています。以下のように作ってみたのですが、数値に何を入れても『4ケタまでの自然数を入れてください』になってしまいます。 4ケタの自然数の定義の仕方がおかしいのでしょうか?アドバイスお願いします<m(__)m> Private Sub 計算_Click() Dim x As Integer a = 数値 b = 数値2 c = 1 If (b > a) Then a = 数値2 b = 数値 End If If (Int(a) = a) And (0 < a)And (a <= 9999) And (Int(b) = b) And (0 < b ) And (b<= 9999) Then Do Until c = 0 x = a \ b c = a - x * b a = b b = c Loop P = 数値 q = 数値2 r = P * q / a MsgBox "最大公約数は" & a & "です" MsgBox "最小公倍数は" & r & "です" Else MsgBox "4ケタまでの自然数を入れてください" End If End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.3

数値、数値2はどうやって決めておられますか もしやですが、文字列となっているのでは? 試しに a = 数値 b = 数値2 c = 1 If (b > a) Then a = 数値2 b = 数値 End If a = a * 1 B = B * 1 と2行、追加してみて試して見てください。

lily_26_bell
質問者

お礼

うまくいきました!! ありがとうございます(*^_^*)

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

Private Sub 計算_Click() Dim 数値a(2) 'Dim 数値 As Integer '整数にすると文字入力排除が出来ない For i = 1 To 2 p1: 数値 = InputBox("数値" & i) If Not IsNumeric(数値) Then MsgBox "数値入力!" GoTo p1 End If 数値 = CInt(数値) If 数値 <= 0 Then MsgBox "正の値入力!" GoTo p1 End If If Int(数値) <> 数値 Then MsgBox "整数入力!" GoTo p1 End If If 数値 >= 10000 Then MsgBox "9999までの整数入力!" GoTo p1 End If '--- 数値a(i) = 数値 Next i MsgBox "数値1=" & 数値a(1) MsgBox "数値2=" & 数値a(2) Dim x As Integer a = 数値a(1) b = 数値a(2) c = 1 If (b > a) Then '交換 z = a a = b b = z End If '--------- Do Until c = 0 x = a \ b c = a - x * b a = b b = c Loop '------- P = 数値a(1) q = 数値a(2) r = P * q / a '--------- MsgBox "最大公約数は" & a & "です" MsgBox "最小公倍数は" & r & "です" End Sub ロジックは変えていません。それでもうまく行くようですが。 入力文字の数字文字、小数点数のチェックで切り抜けているところがあるが、まあこんなものかな。

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.2

おっと、 ×If分→○if文

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

If分のロジックをテストするコードを書くと良いです。 コードに自信を持てるようになります。

関連するQ&A

  • 最大公約数と最小公倍数

    この問題のことが分かりません教えてください(>_<) 44、78、112のどの数も自然数Aで割ると10余り これは最大公約数で解く 自然数Bを12、18、30のどの数で割っても3余る これは最小公倍数で解く どういう理屈で最大公約数と最小公倍数を使い分けるのですか?

  • 3つの自然数の最大公約数と最小公倍数

    3つの自然数a, b, c(a<b<c)について、aとbとcの最大公約数が12、最小公倍数が216であるような(a, b, c)の組をすべて求めるには、どのように考えればよいのでしょうか?

  • 最小公倍数 最大公約数 周辺の定理について

    自然数a=自然数aと自然数bの最大公約数×整数x 自然数b=自然数aと自然数bの最大公約数×整数y ⇒ 自然数aと自然数bの最小公倍数 =整数x × 整数y × 整数aと整数bの最大公約数 =整数x × 自然数b =整数y × 自然数a という定理の証明をおしえてください うんうん唸って考えてみたのですがどうしてもうまく証明できませんでした     

  • 最小公倍数と最大公約数の関係について

    最小公倍数と最大公約数の関係について 小学校に通っている妹の宿題を教えていたとき 最小公倍数と最大公約数の問題がありました。 自分は今まで何となく解いていましたが あることに気が付きました a,bがあり  この2つの最小公倍数は、a,bそれぞれをa,bの最大公約数で割ったものの積に a,bの最大公約数を掛けたもの どうでしょうか? もしこれが正しい場合(実際に上記の公式はありますか?) 証明はどのようにすればよいのでしょうか? 回答宜しく御願い致します。

  • 数学Ⅱの最大公約数・最小公倍数

    x^3-4x^2+3x 6x^4-15x^3-9x^2 の最大公約数と最小公倍数を求めよ という問題は因数分解した後、どのように最大公約数、最小公倍数を考えたら良いのでしょうか? まずどう考えたら最大公約数がx(x-3)となるのでしょうか? 最小公倍数も x^2(x-1)(x-3)(2x+1) となる理由がわかりません…。 x^2はどう考えたら出てくるのでしょうか? よろしくお願いしますm(__)m

  • 最大公約数と最小公倍数

    3つの整数 a, b, 72 (a>b) の最大公約数は6, 最小公倍数は432 であるという。 a, b として考えられる数のうち、a-b の値が最も小さくなるような a, b の値? 解き方を教えてください よろしくお願いします

  • 最大公約数から最小公倍数

    ユークリッドの互除法についてなんですが、あるサイトでの公式?というか、 例》aとbの最大公約数を求めろ。 式がr(余り)=a-(a÷b)b それはわかったんです。 ですが、最大公約数から最小公倍数を出すという作業がわかりません。それと、手でやっているのでコンピューターは使っていません。 わかりやすく教えてください!

  • 最小公倍数と最大公約数から3つの自然数を求める。

    A、B、C・・・の最大公約数を(A、B、C・・・)最小公倍数を[A、B、C・・・]で表します。(例)(4165、6035)=85 [4165、6035]=295715 A、Bが互いに素 (A、B)=1 お願いします。分からないのは最小公倍数から、一方の数を求めるところです。問題は、 0<a<b<cを満たす3個の整数a、b、cがある。次の関係を同時に満たすa、b、cを求めよ。 (1)a、b、cの最大公約数は45である。 (2)bとcの最大公約数は225、最小公倍数は1350である。 (3)aとbの最小公倍数は3150である。 解答 条件(1)より a=45a'、b=45b'、c=45c'(a'、b'、c'は整数)・・・[1]とおくと、 (a'、b'、c')=1、 0<a'<b'<c'・・・[2] 条件(2)より(b、c)=45(b'、c')=225 ∴(b'、c')=5・・・[3] [b、c]=45[b'、c']=1350 ∴[b'、c']=30・・・[4] [3]よりb'=5b''、c'=5c''とおけば (b''、c'')=1 ・・・[5] で[4]より 5[b''、c'']=30 ∴ [b''、c'']=6・・・[6] b<cよりb''<c''これと[5]、[6]より b''=1、c''=6 または b''=2、c''=3 (イ)b''=1、c''=6のとき b=45*5*1=225、 c=45*5*6=1350 条件[3]より [a、b]=[45a'、225]=45[a'、5]=3150 ∴[a'、5]=70 ここからがわからないところです。∴ a'=14 A、Bの最大公約数をG、最小公倍数をLとするとAB=GLからa'を導くには(a'、5)=1となると思うのですが、どこから導けるのかわかりません。5=b'として(a'、b'、c')=1から(a'、b')=1は導けないと思います。c'の数によって(a'、b')=1でなくても、 (a'、b'、c')=1 解答は続けて、このときa=45*14=630>225=bとなり不適。 (ロ)b''=2、c''=3のときb=45*5*2=450、c=45*5*3=675  条件[3]より[a、b]=[45a'、450]=45[a'、10]=3150 ∴[a'、10]=70 ∴ a'=7 またb'=10、c'=15だからこれらは[2]の条件を満たしている。a=45*7=315 答え a=315、b=450、c=675 どなたか [a'、5]=70 ∴ a'=14を解説してくださいお願いします。

  • 最大公約数と最小公倍数

    最大公約数と最小公倍数がイマイチ理解できません。 そこで、「36と120の最大公約数と最小公倍数の値を求めよ」という問題を解説も備えて解き方を教えてください!

  • 最小公倍数と最大公約数の問題がわかりません教えてください

    問題 xの2剰-2x-3、xの2剰+4x+3、xの2剰+1 の最小公倍数と最大公約数を求めなさい 上記のとき方をを教えてください 答えは最大公約数:x+1 最小公倍数:(x+1)(x+3)(x-3)(xの2剰ーx+1) です

専門家に質問してみよう