PDA

View Full Version : سوال: میشه این برنامه رو (بزرگترین مقسوم علیه مشترک) رو بهینه تر نوشت و نحوه نوشتن دستور is true



sahel65
دوشنبه 12 اردیبهشت 1390, 08:01 صبح
سلام عزیزان
این برنامه من در خصوص بزرگترین مقسوم علیه مشترک هست:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{

int x, y;
x = 63;
y = 81;
//for find big number
if (x < y)
{
int j;
j = x;
x=y;
y = j;
}
//---------
if((x%y)==0)
{
MessageBox.Show("B.M.M is" + y);
}
else
for(int i=y;i>=1;i--)
{
bool j=true;
j = ((x % i == 0) && (y % i == 0));
if (j==(true))
{
MessageBox.Show("B.M.M is" + i);
break;
}
}
}
}
}

حالا چند تا سوال ازتون داشتم؛
1- من دوست دارم از تابع Is true استفاده کنم؛ چجوری از این تابع میشه استفاده کرد؟
2- در قدیم دستوری داشتیم که جای دو تا عدد رو بدون گرفتن متغیر دیگه ای اضافه می کرد(اگه درست یادم باشه و اونهم توی بیسک) به نام swap، آیا توی C# هم میشه این کار رو کرد؟
3- با توجه به اینکه من مبتدی هستم میشه بگید اگه بخوام این برنامه رو تو یه تابع تعریف کنم و در واقع برنامه با استفاده از تابع کار کنه چه کاری باید انجام بدم. مثلا تابع (func bmm(int a,int b.
ممنونم.

exlord
سه شنبه 13 اردیبهشت 1390, 17:01 عصر
منظورتون از تابع is true چیه ؟
private int BMM(int x,int y)
{
int Max = Math.Max(x, y);
int min = Math.Min(x, y);
if (Max % min == 0)
return min;

for (int i = min; i >= 1; i--)
{
if (Max % i == 0 && min % i == 0)
return i;
}

return 0;
}

MessageBox.Show("B.M.M is : " + BMM(63, 81).ToString());

FastCode
سه شنبه 13 اردیبهشت 1390, 19:36 عصر
به انگلیسی نمینویسن BMM.
مینویسن GCD (http://en.wikipedia.org/wiki/Greatest_common_divisor)

unknown.unforgiven
سه شنبه 13 اردیبهشت 1390, 20:04 عصر
private int gcd(int a, int b)
{
if (b == 0)
return a;
else
return gcd(b, a % b);
}