#include <stdio.h>
int main()
{
    int i,j,a;
    printf("Enter last number  : ");
    scanf("%d",&a);
    printf("\nThis is series of prime number : ");
    for(i=2; i<=a; i++){
        for(j=2; j<=i; j++){
            if(i%j==0)
                break;
        }
        if(i==j)
            printf("%d ",i);
    }
}

i%j==0 হলে প্রোগ্রামটা লুপ থেকে বের হয়ে আসবে। অতঃপর if(i==j) তে কি কাজ করবে? i==j কিভাবে সমান হয়?

asked 12 Nov, 03:21

JAHIDUL%20ISLAM%20JAHID's gravatar image

JAHIDUL ISLAM JAHID
213

edited 12 Nov, 07:45

Mosharraf%20Hosain's gravatar image

Mosharraf Hosain ♦
7618

@JAHIDUL ISLAM JAHID
ধন্যবাদ দিতে হলে উত্তরের নিচে কমেন্ট সেকশন থেকে দেয়া যায়। উত্তরের সেকশনে শুধুমাত্র উত্তর দেয়া যাবে। যেকোনো প্রকার মন্তব্য, আলোচনা, ধন্যবাদ জ্ঞাপনের জন্য কমেন্ট ফিচার ব্যবহার করতে অনুরোধ করছি।

(12 Nov, 08:22) Mosharraf Hosain ♦

all right.

(13 Nov, 05:03) JAHIDUL ISLAM JAHID

মৌলিক সংখ্যা নির্ণয়ের জন্য সাধারণত সিভ কোড ব্যবহার করা হয়। নয়ত বড় কোন রেঞ্জে ক্যালকুলেশনের সময় টাইম লিমিট ক্রস করার সম্ভাবনা থাকে।

কিছুটা ধারণা দেই । নিজে চেষ্টা করলে ভাল হয়।

for(j=2; j<=i; j++)

এখানে j<=i পর্যন্ত চেক করার দরকার নেই। ডিসক্রিট ম্যাথ পড়লে জানতে পারবেন i মৌলিক না হলে এর কোন একটি গুণনীয়ক sqrt(i) এর চেয়ে ছোট বা সমান হবে। তাই লুপটি সর্বোচ্চ sqrt(i)+1 পর্যন্ত চালানো যেতে পারে।

আর সংখ্যাটি যদি ২ দ্বারা বিভাজ্য না হয় তাহলে আর কোন জোড় সংখ্যা দ্বারাই বিভাজ্য হবে না। তাই একবার ২ দ্বারা বিভাজ্য কিনা তা যাচাই করে ৩ থেকে sqrt(i)+1 পর্যন্ত সকল বিজোড় সংখ্যার জন্য চেক করলেই চলবে।

কোডটি আরও ইফিশিয়েন্ট করতে sqrt() ব্যবহার না করে

j*j<=i

কন্ডিশন ব্যবহার করলে ভাল হয় । কারণ গুণ sqrt() থেকে দ্রুত কাজ করে।

permanent link

answered 12 Nov, 20:10

Sheikh_Fahad's gravatar image

Sheikh_Fahad
2956

edited 13 Nov, 00:06

Mosharraf%20Hosain's gravatar image

Mosharraf Hosain ♦
7618

যদি j লুপ এর (i%j) কন্ডিশন সত্য না হয় তাহলে j লুপ পুরোটাই চলবে এবং যখন j এর মান i এর মান এর সমান হবে তখন j লুপটি ব্রেক করবে। তাই i আর j সমান হবে তখন যখন সংখ্যাটা প্রাইম হবে। যেমন i এর মান ৫ এর ক্ষেত্রে j এর মান ২, ৩, ৪ কোনোটি দ্বারাই ৫ কে ভাগ করে ভাগশেষ ০ পাওয়া যায় না। কিন্তু j এর মান ৫ হলে (i%j == 0) হয় আর তখন লুপটি ব্রেক করে। আশা করি বুঝতে পেরেছেন। আর আপনার এই কোডের j<=i কন্ডিশনটি j<i দিলেও হবে। তাছাড়া মৌলিক সংখ্যা বের করার জন্য এটা মোটেও কোনো ভালো উপায় নয়। আরও চিন্তা করুন কিংবা ইন্টারনেটে খুঁজে এর চেয়ে ইফিশিয়েন্ট পদ্ধতি দেখে নিন।

হ্যাপি কোডিং।

permanent link

answered 12 Nov, 07:32

Return_Zero's gravatar image

Return_Zero
1356

edited 12 Nov, 07:54

Mosharraf%20Hosain's gravatar image

Mosharraf Hosain ♦
7618

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:

×353

question asked: 12 Nov, 03:21

question was seen: 73 times

last updated: 13 Nov, 05:03