Tuesday, October 8, 2019



   প্রোগামিং সমস্যাঃ ভাজক
একটি সংখ্যার সব গুণনীয়ক (ভাজক) বের করতে হবে ।
ইনপুটঃ
প্রথম লাইনে টেস্ট কেসের সংখ্যা T (T<=10) . এর পরের পরবর্তী সংখ্যাক লাইনে T একটি করে পূর্ণ সংখ্যা  N থাকবে , যেখানে 1<=N<=100000 ।
আউটপুটঃ
প্রতিটি কেসের জন্য একটি করে লাইন প্রিন্ট করতে হবে , শুরুতে কেস নম্বর দিতে হবে । এরপর N এর সব গুণনীয়ক ছোট  থেকে বড় আকারে প্রিন্ট করতে হবে এবং প্রতিটি গুণনীয়ক শুধুমাত্র একবার প্রিন্ট করতে হবে  । গুণনীয়কগুলো  শুধুমাত্র  একটি স্পেস দিয়ে আলাদ করতে হবে এবং লাইনের শেষে কোনো অতিরিক্ত স্পেস থাকবে না 
Example :
Input                output 
3
6                      case 1 :  1   2   3   6
15                    case 2 :  1  3   5   15
23                    case 3 :   1  23

এই সমস্যাটির কাজ হল কোন একটি সংখ্যার সবগুলো গুণ্নীয়ক বের করা । এখন প্রশ্ন হল গুণনীয়ক কি? গুণনীয়ক  হল  , কোন একটি সংখ্যাকে অপর এক বা একাধিক সংখ্যা ভাগ করার পর যদি  ভাগশেষ শূন্য হয় ,তাহলে ঐ সংখ্যাগুলোকে সেই সংখ্যাটির গুণ্নীয়ক বলা হয় । এই সমস্যাটি নিয়ে আমরা ধাপে ধাপে আলোচনা করা করব ।
Step 1 :  প্রথম ইনপুট নিতে হবে টেস্ট কেস T ।T এর মান যত হবে ততটি লাইনে ইনপুট নিতে হবে একটি করে পূর্ণসংখ্যা N । যেখানে  N এর সর্বোচ্চ মান হতে  পারে 100000 ।
Step 2 : কোড লিখার শুরুতে main ফাংশনে কিছু প্রয়োজনীয় ভেরিয়েভল ডিক্লেয়ার করতে হবে ।
             Example :  int T, i , j , N ;
ব্যখ্যাঃ  আমরা এখানে T ব্যবহার করে প্রথম ইনপুট নেব ( যেটি নির্দেশ করে আমরা কতটি  সংখ্যা নেব ) ,  প্রতি লাইনে ইনপুট নেওয়ার জন্য আমরা যে for  লুপটি ব্যবহার করব সে for  লুপের ইনডেক্স হিসেবে i ব্যবহার করব , ভাজক  গুণ্নীয়ক বের  করার প্রথম  for  লুপের ভিতর আরেকটি  for  লুপ ব্যবহার করা হবে তার জন্য j নেওয়া হয়েছে , N ব্যবহার করে T সংখ্যক  লাইনে  সংখ্যাগুলো ইনপুট নেওয়া হবে।
Step 3 : যেহেতু আমাদের  T সংখ্যাক লাইনে ইনপুট নিতে বলা হয়েছে ,T তার জন্য প্রথমে  এর মান ইনপুট নিতে হবে ।
Example :
     scanf(“ %d “, &T);
step 4 :  এখন  আমাদেরকে   T সংখ্যক লাইনে ইনপুট নিতে হবে । তার জন্য একটি লুপ ব্যবহার করতে হবে  । যেহেতু আমরা T সংখ্যক সংখ্যা নিব , তাই 1 থেকে  T সংখ্যকবার লুপ চালাতে হবে  ।
Example : for( i = 1 ; i = <= T ; i++ )
step 4 : লুপটি যত বার চলবে ততবার N ইনপুট নিতে হবে
Example : scanf( ‘” %d “, &N);
Step 5 : প্রতি কেসের আমাদের কে  আউটপুটে , case 1 , case 2 , এভাবে প্রিন্ট করতে হবে । প্রিন্ট করার কাজটা N ইনপুট নেওয়ার পরেই করতে হবে ।
Example : printf (“case  %d : ”, i );
Step 6 :  গুণ্নীয়ক বা ভাজক বের করার জন্য আমাদের কে আরেকটি  লুপ ব্যবহার করতে হবে । লুপ্টি চালানো হবে 1 থেকে N  এর মান পর্যন্ত । এখন N এর গুণনীয়ক বের করার জন্য  ,1 থেকে  N পর্যন্ত যতগুলো সংখ্যা দিয়ে নিঃশেষে  বিভাজ্য হয় । সে সংখ্যাগুলো প্রিন্ট করতে হবে ।  সমস্যায় বলা হয়েছে একটি স্পেস ক্যারেক্টার দিয়ে আলাদা করতে হবে , তাই প্রিন্ট ফাংশনে একটি অতিরিক্ত ক্যারেক্টার দিতে হবে ।
Example :
         for(j = 1 ; j <= N ;j++){
            if(N%j==0){
                printf(" %d",j);
            }
        }

Step 7 : যেহেতু প্রতি কেসের জন্য আলাদা লাইন প্রিন্ট করার কথা বলা হয়েছে । তাই আমদেরকে দ্বিতীয় লুপ শেষ হওয়ার পর একটি লাইন প্রিন্ট করব ।
Example : printf(“\n”);

নিচে পুরো কোডটি একসাথে দেওয়া হয়েছেঃ
          #include<stdio.h>
int main ()
{
    int T,i,j,N;
    scanf("%d",&T);
    for(i=1;i<=T;i++){
        scanf("%d",&N);
        printf("case %d:",i);
        for(j = 1 ; j <= N ;j++){
            if(N%j==0){
                printf(" %d",j);
            }
        }

        printf("\n");
    }
        return 0;
}  



3 comments:

Categories

About Me

My photo
I am Md Fakhrul Islam. I am a student of EEE of Daffodil International University I am expert in SEO and Graphic designing.

Contact Form

Name

Email *

Message *

Popular Posts