#include<stdio.h>
int main()
{
    int num1,num2,rem,gcd,lcm;
    scanf("%d %d",&num1, &num2);

    while( num2 != 0){
        rem = num1%num2;
        num1=num2;
        num2=rem;
    }
    gcd=num1;
    printf("GCD and is %d\n",gcd);

    lcm = num1*num2 / gcd;

    printf("LCM is %d\n", lcm);

    return 0;
}

asked 23 Nov, 13:02

Amrita%20sarker's gravatar image

Amrita sarker
254

edited 23 Nov, 13:49

Mosharraf%20Hosain's gravatar image

Mosharraf Hosain ♦
63118


কারণ গসাগু নির্ণয়ের সময় আপনি num2 কে ভাগ করতে করতে শূন্য করে ফেলেছেন। শূন্য দিয়ে কিছুকে গুণ করলে শূন্য হয়, সেটাকে অন্যকিছু দিয়ে ভাগ করলেও শূন্যই পাওয়া যাবে।

এর সমাধান হলো গসাগু অন্য একটা ফাংশনে নির্ণয় করে মেইন ফাংশনে সেই মানটা রিটার্ন করা।

int gcd (int num1, int num2)
{
    int rem;
    while (num2 != 0) {
        rem = num1 % num2;
        num1 = num2;
        num2 = rem;
    }
    return num1;
}

এখন এই ফাংশনটা মেইন ফাংশন থেকে কল করলে মেইন ফাংশনের num1, num2 চলক (ভ্যারিয়েবল)-দুটির মান অবিকৃত থাকবে। gcd() ফাংশনে যে চলকদুটির মান পরিবর্তন হবে সেগুলো অন্য ফাংশনের লোকাল ভ্যারিয়েবল হওয়ায় মেইন ফাংশনে কোনো পরিবর্তন হবে না। পুরো প্রোগ্রামটির গঠন হবে এরকম:

#include <stdio.h>

int gcd (int num1, int num2)
{
    int rem;
    while (num2 != 0) {
        rem = num1 % num2;
        num1 = num2;
        num2 = rem;
    }
    return num1;
}

int main()
{
    int num1, num2, gc, lcm;
    scanf("%d %d",&num1, &num2);
    gc = gcd(num1, num2);
    lcm = (num1 * num2) / gc;
    printf("GCD = %d\nLCM = %d\n", gc, lcm);

    return 0;
}

যদি আলাদা ফাংশন লিখতে না চান তো চলকদুটির মান অবিকৃত রাখতে আলাদা নামে দুটি চলক ঘোষণা করে সেখানে রেখে দিন। লসাগু বের করার সময় সেই চলকদুটি গুণ করতে হবে (num1, num2-এর পরিবর্তে)।

int n1 = num1, n2 = num2;

এই রাখার কাজটা কিন্তু num1, num2-এর মান ইনপুট নেওয়ার পরে করতে হবে।


১. ফাংশন সম্পর্কে মৌলিক ধারণা নিতে পারেন কম্পিউটার প্রোগ্রামিং বইয়ের ফাংশন অধ্যায় থেকে।

permanent link

answered 23 Nov, 13:48

Mosharraf%20Hosain's gravatar image

Mosharraf Hosain ♦
63118

edited 23 Nov, 15:49

অনেক অনেক ধন্যবাদ।

(23 Nov, 14:16) Amrita sarker

যদি আপনার সমস্যার সমাধান হয়ে থাকে তো উপরে বাম কোনায় টিক বাটনটিতে ক্লিক করে উত্তরটি "সঠিক উত্তর" হিসেবে চিহ্নিত করুন।

(23 Nov, 14:28) Mosharraf Hosain ♦

ভাই আপনাকে অনেক অনেক ধন্যবাদ । কিন্তু আমি নুতন শিখতেছি তাই দুইবার ফাংশান কল করা পারতেছি না ।

(23 Nov, 14:31) Amrita sarker
1

উত্তর এডিট করে দিয়েছি।

(23 Nov, 14:48) Mosharraf Hosain ♦
#include<stdio.h>
int main()
{
    int num1,num2,n1,n2,rem,gcd,lcm;
    printf("Enter two numbers: ");
    scanf("%d %d",&num1, &num2);
    n1 = num1;
    n2 = num2;

    while(n2 != 0)
    {
        rem = n1%n2;
        n1=n2;
        n2=rem;
    }
    gcd=n1;
    lcm = num1*num2 / gcd;

    printf("GCD and is %d\n",gcd);
    printf("LCM is %d\n", lcm);

    return 0;
}
permanent link

answered 25 Nov, 06:07

arafat135's gravatar image

arafat135
292

edited 25 Nov, 06:17

Mosharraf%20Hosain's gravatar image

Mosharraf Hosain ♦
63118

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×401

question asked: 23 Nov, 13:02

question was seen: 68 times

last updated: 25 Nov, 06:17