Gushwell's C# Programming Page
C#プログラマーのための一味違う学習サイト。
最大公約数を求める (ユークリッドの互除法)
ここでは、ユークリッドの互除法を使い、2つの整数の公約数のうち最大のもの(最大公約数)を求めています。
ユークリッドの互除法については、Wikipediaの
こちらのページ
を参照してください
■page.xaml.cs
using System.Windows; using System.Windows.Controls; namespace GcdApp { public partial class Page : UserControl { public Page() { InitializeComponent(); } private void button1_Click(object sender, RoutedEventArgs e) { int num1, num2; if (int.TryParse(textBox1.Text, out num1) && int.TryParse(textBox2.Text, out num2)) { int gcd = Gcd(num1, num2); textBlock1.Text = gcd.ToString(); } } // ユークリッドの互除法 (Silverligh非依存) static int Gcd(int a, int b) { if (a < b) return Gcd(b, a); // 引数を入替えて自分を呼び出す int d = 0; do { d = a % b; a = b; b = d; } while (d != 0); return a; } } }
■page.xaml
<UserControl x:Class="GcdApp.Page" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="400" Height="100"> <Grid x:Name="LayoutRoot" Background="White"> <Button Content="最大公約数" Height="23" HorizontalAlignment="Left" Margin="193,20,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" /> <TextBox Text="56" Height="24" HorizontalAlignment="Left" Margin="18,20,0,0" Name="textBox1" VerticalAlignment="Top" Width="82" /> <TextBox Text="42" Height="24" HorizontalAlignment="Left" Margin="105,20,0,0" Name="textBox2" VerticalAlignment="Top" Width="82" /> <TextBlock Height="23" HorizontalAlignment="Left" Margin="18,61,0,0" Name="textBlock1" Text="" VerticalAlignment="Top" Width="120" /> </Grid> </UserControl>
[PR]
バストアップ