نمایش نتایج 1 تا 2 از 2

نام تاپیک: بزرگترین مقسوم علیه مشترک و کوچکترین مضرب مشترک به روش غربال آراتستن

  1. #1
    کاربر دائمی آواتار Hamid2547
    تاریخ عضویت
    خرداد 1385
    محل زندگی
    شیراز
    پست
    120

    بزرگترین مقسوم علیه مشترک و کوچکترین مضرب مشترک به روش غربال آراتستن

    میخواستم ب میم میم و ک میم میم دو عدد رو به روش آراتستن حساب کنم ولی توی شرط حلقه مشکل دارم،کتابی که مسئله رو ازش اوردم توضیح میده که برای این منظور عدد بزرگتر رو بر عدد کوچکتر تقسیم میکنیم و اگر باقی مانده صفر شد عدد کوچکتر که مقسوم علیه هست ب میم میم هست ولی اگر صفر نشد مقسوم علیه رو جای مقسوم و باقی مانده رو جای مقسوم علیه قرار میدیم و عمل تقسیم رو تا زمانی که صفر بشه ادامه میدیم،من هر چی فکر کردم نتونستم شرط حلقه رو در بیارم و اگر کسی بتونه در این مورد کمک کنه ممنون میشم،الگوریتمی که کتاب برای این موضوع ارائه کرده و کد خودم رو قرار میدم.
    static void Main(string[] args)
    {
    int a = int.Parse(Console.ReadLine());
    int b = int.Parse(Console.ReadLine());
    int temp;
    int kmm;
    int m,n;


    m = a;
    n=b;


    if (a < b)
    {
    temp = a;
    a = b;
    b = temp;

    }


    if (a % b == 0)
    {


    Console.WriteLine("The bmm is {0}", b);

    }

    else {

    while (a % b != 0)
    {
    a = a / b;
    b = a % b;

    if (a % b == 0)
    {
    Console.WriteLine("The bmm is {0}", b);

    }

    }

    }

    kmm = m * n / b;
    Console.WriteLine("The kmm is {0}",kmm);
    Console.ReadLine();

  2. #2
    کاربر دائمی آواتار Hamid2547
    تاریخ عضویت
    خرداد 1385
    محل زندگی
    شیراز
    پست
    120

    نقل قول: بزرگترین مقسوم علیه مشترک و کوچکترین مضرب مشترک به روش غربال آراتستن

    مشکل حل شد،بیشتر نمونه برنامه هایی که به صورت غیر بازگشتی حل شده بود مقسوم علیه رو توی شرط قرار میداد که باعث خطای دیواید بای زیرو توی جاهای دیگه میشد که یا اشتباه بود و یا من دلیلش رو نمیفهمیدم مثل این برنامه:
    static int GCD(int a, int b)
    {
    int Remainder;

    while( b != 0 )
    {
    Remainder = a % b;
    a = b;
    b = Remainder;
    }

    return a;
    }


    همون برنامه ی اولی ولی اصلاح شده:
    static void Main(string[] args)
    {
    int a = int.Parse(Console.ReadLine());
    int b = int.Parse(Console.ReadLine());
    int temp;
    int kmm;
    int m, n, r;


    m = a;
    n = b;


    if (a < b)
    {
    temp = a;
    a = b;
    b = temp;

    }


    if (a % b == 0)
    {


    Console.WriteLine("The bmm is {0}", b);

    }

    else
    {

    do
    {
    r = a % b;
    a = b;
    b = r;

    if (r == 0)
    {
    Console.WriteLine("The bmm is {0}", a);

    }

    }
    while (r != 0);
    }

    kmm = m * n / a;
    Console.WriteLine("The kmm is {0}", kmm);
    Console.ReadLine();

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •