প্রোগামিং সমস্যাঃ ভাজক
একটি
সংখ্যার সব গুণনীয়ক (ভাজক) বের করতে হবে ।
ইনপুটঃ
প্রথম
লাইনে টেস্ট কেসের সংখ্যা 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;
}