সি প্রোগ্রামে বিভিন্নভাবে প্রাইম নাম্বার বের করা-০২

 আগের পোস্টটির 
 প্রোগ্রামটিকে আরও এফিসিয়েন্ট করা যায়। আমরা n পর্যন্ত বা n-1 পর্যন্ত লুপ চালিয়ে দেখছি যে ভাগ করা যায় নাকি। এতদূর লুপ চালানোর আসলে কোন প্রয়োজন নেই।
কোন একটি প্রাইম নাম্বারকে তার অর্ধেক অপেক্ষা বড় কোন সংখ্যা দ্বারা ভাগ করা যায় না,মানে ভাগশেষ কখনই ভাগশেষ শুন্য হবে না।
তাই n  অথবা n-1 পর্যন্ত কোন নাম্বার দিয়ে ভাগ করে দেখারই কোন প্রয়োজন নেই। কারণ সেগুলো দিয়ে নিঃশেষে বিভাজ্য হওয়া সম্ভব না।

এর মান বাড়তে বাড়তে যখন n/2 এর সমান হবে এরপর থেকে অথবা n-1 পর্যন্ত কোন নাম্বার দিয়ে ভাগ করে দেখার প্রয়োজন নেই।যদি n/2 পর্যন্ত কোন সংখ্যা দিয়ে i কে ভাগ করা যায় তাহলে প্রাইম নয় আর না হলে প্রাইম।


#include <stdio.h>
int main()
{
int i,num,count=0;
printf ("Enter the to test: ");
scanf ("%d",&num);
for(i=2;i<=num/2;i++){
if (num%i==0)
count++;
break;
}
if (count==0 && num!=1)
printf ("%d is Prime\n",num);
else
printf ("%d is not Prime",num);
}
view raw gistfile1.c hosted with ❤ by GitHub

উপরের কোডটি না বুঝলে comments করেন।