মৌলিক সংখ্যাটি বুনিয়াদ কিনা তা নির্ধারণ করার জন্য আমরা কেন চেক করব?


392

একটি সংখ্যাটি প্রধান বা না তা পরীক্ষা করার জন্য কেন আমাদের পরীক্ষা করতে হবে যে এটি কেবলমাত্র সংখ্যার বর্গমূল পর্যন্ত বিভাজ্য?


33
কারণ যদি n = a*bএবং a <= bতারপর a*a <= a*b = n
নেস

7
স্পষ্ট করার জন্য, এর অর্থ আমাদের কেবলমাত্র পরীক্ষা করা উচিত floor(sqrt(n))
অ্যাকিউম্যানাস

উত্তর:


659

যদি সংখ্যাটি nপ্রধান না হয় তবে এটি দুটি কারণের সাথে যুক্ত হতে পারে aএবং b:

n = a * b

এখন aএবং bউভয়ই বর্গমূলের চেয়ে বড় হতে পারে না n, তখন থেকে পণ্যটি এর a * bচেয়ে বড় হবে sqrt(n) * sqrt(n) = n। সুতরাং যে কোনও ফ্যাক্টরীকরণে n, কারণগুলির মধ্যে কমপক্ষে একটি অবশ্যই বর্গমূলের চেয়ে ছোট হতে হবে nএবং আমরা যদি বর্গমূলের চেয়ে কম বা সমান কোনও উপাদান খুঁজে না পাই তবে nঅবশ্যই একটি প্রধান হতে হবে।


sqrt(n)এই সম্পত্তি ধরে রাখার জন্য কীভাবে যথেষ্ট সুনির্দিষ্ট হতে হবে তা প্রদত্ত যে আমরা ভাসমান পয়েন্ট ব্যবহার করছি।
বেনোয়েট

@ বেনোট আপনি যদি ভাসমান-পয়েন্ট সংখ্যার জটিলতা এড়াতে চান তবে আপনি সর্বদা তার i * i <= nপরিবর্তে চেকটি ব্যবহার i <= sqrt(n)করতে পারেন।
সোভেন মারনাচ

348

m = sqrt(n)তাহলে বলা যাক m × m = n। এখন যদি nপ্রাইম না হয় তবে তাই nলেখা যেতে পারে । লক্ষ করুন যে, যেহেতু একটি বাস্তব সংখ্যা , এবং প্রাকৃতিক নম্বর আছে।n = a × bm × m = a × bmnab

এখন 3 টি মামলা হতে পারে:

  1. a> মি ⇒ বি <এম
  2. a = m ⇒ b = m
  3. a <m <b> মি

সমস্ত 3 ক্ষেত্রে min(a, b) ≤ m,। তাই যদি আমরা অবধি অনুসন্ধান করি তবে আমরা mকমপক্ষে একটি ফ্যাক্টর সন্ধান করতে বাধ্য n, যা nপ্রাইম নয় এটি প্রদর্শন করার জন্য যথেষ্ট ।


4
n = 12 মি = স্কয়ার্ট (12) = 3.46, এ = 2, বি = 6. এন = এম মি অর্থাৎ 12 = 3.46 * 3.46 এবং এন = এ বি অর্থাৎ 12 = 2 * 6। এখন শর্ত ৩. ক <এম <বি অর্থাৎ ২ <৩.4646 << So. সুতরাং প্রাইম চেক করতে আমাদের কেবল ৩.4646 এর চেয়ে কম সংখ্যার জন্য যাচাই করতে হবে যা এটি সংখ্যাটি প্রধান নয় তা খুঁজে বের করার জন্য ২ টি। সুতরাং, n এর চেয়ে কম বা সমান সংখ্যার দ্বারা বিভাজ্যতা পরীক্ষা করুন (যদি n = 4, m = a = b = 2) n এর বর্গমূল হয়।
অনুকম্প

2
আমি মনে করি আমাদের প্রথমে অনুমানটি হাইলাইট করা উচিত। অনুমান করুন n is not a prime, এবং এটি প্রমাণ করুন, অন্যথায় এটি প্রধান বিষয়।
হুয়েই টান

আসলে, আমি নিশ্চিত নই যে এটি একটি উত্তরের উত্তর। এটি একটি সঠিক উত্তর, তবে এটি সত্যই প্রশ্নের উত্তর দেয় না। এটি কেবল প্রাইমস এবং স্কয়ার্টের আশেপাশে কিছু অন্যান্য গতিবিদ্যা বর্ণনা করে। @ সোভেনের উত্তর দুটিই সংক্ষিপ্ত এবং প্রক্রিয়াটিতে আরও প্রশ্ন তৈরি করে না।
জন এম

1
আমি সর্বশেষ ভাল সংস্করণে ফিরে এসেছি। প্রবাহের জন্য প্রয়োজনীয় কোনও শব্দ অযথা ('অতএব') মুছে ফেললে আপনি এটি মিস করেছেন।
নেস

55

কারণ যদি কোনও ফ্যাক্টর n এর বর্গমূলের চেয়ে বড় হয় তবে অন্যান্য গুণকটি এর সাথে n এর সমান n এর সাথে গুণিত হবে এটি অবশ্যই n এর বর্গমূলের চেয়ে কম।


37

আরও স্বজ্ঞাত ব্যাখ্যাটি হ'ল: -

100 এর বর্গমূল 10 হয় আসুন axb = 100 বলি, বিভিন্ন এবং ক এবং বিভিন্ন জোড়ার জন্য।

যদি একটি == খ হয়, তবে সেগুলি সমান এবং 100 এর বর্গমূল হুবহু। যা 10।

এর মধ্যে যদি একটি 10 ​​এর চেয়ে কম হয় তবে অন্যটি আরও বেশি হতে হবে। উদাহরণস্বরূপ, 5 x 20 == 100. একটি 10 ​​এর চেয়ে বড়, অন্যটি 10 ​​এর চেয়ে কম।

অক্ষের কথা চিন্তা করে যদি তাদের মধ্যে একটি নীচে যায় তবে অন্যটিকে ক্ষতিপূরণের জন্য আরও বড় হতে হবে, তাই পণ্যটি 100 এ থাকে They তারা বর্গমূলের চারপাশে পিভট।

101 এর বর্গমূল প্রায় 10.049875621। সুতরাং আপনি যদি প্রাথমিকতার জন্য 101 নম্বরটি পরীক্ষা করে থাকেন তবে আপনাকে 10 সহ 10 এর মাধ্যমে পূর্ণসংখ্যার চেষ্টা করতে হবে তবে 8, 9, এবং 10 এগুলি নিজেই প্রধান নয়, সুতরাং আপনাকে কেবল 7 এর মাধ্যমে পরীক্ষা করতে হবে যা হ'ল প্রধান.

কারণ যদি একটি সংখ্যার সাথে 10 এর চেয়ে বড় সংখ্যার সাথে যুক্ত হয়, তবে অন্যটির জোড়টি 10 ​​এর চেয়ে কম হতে হবে যদি ছোটটি উপস্থিত না থাকে তবে 101 এর সাথে কোনও মিলের বৃহত্তর গুণক নেই।

আপনি যদি 121 টি পরীক্ষা করে থাকেন তবে বর্গমূল 11 হয় through এটি সমানভাবে চলে কিনা তা দেখতে আপনাকে প্রাথমিক পূর্ণসংখ্য 1 থেকে 11 (সমেত) পরীক্ষা করতে হবে। 11 11 বার যায়, সুতরাং 121 প্রাইম নয়। আপনি যদি 10 এ থেমে থাকেন এবং 11 পরীক্ষা না করে থাকেন, আপনি 11 টি মিস করেছেন।

আপনাকে প্রতিটি প্রধান পূর্ণসংখ্যার 2 টির চেয়ে বড়, তবে বর্গমূলের চেয়ে কম বা সমান পরীক্ষা করতে হবে, ধরে নিই যে আপনি কেবল বিজোড় সংখ্যা পরীক্ষা করছেন।

`


3
"অক্ষের কথা চিন্তা করে যদি তাদের মধ্যে একটি নীচে নেমে যায় তবে অন্যটিকে ক্ষতিপূরণের জন্য আরও বড় হওয়া উচিত, তাই পণ্যটি 100 এ থাকে They তারা বর্গমূলের চারপাশে পিভট।" আমার আহা মুহুর্ত! ধন্যবাদ!
ব্রায়ান উইগিংটন

এটি সেরা উত্তর।
JeanieJ

19

ধরুন nকোনও মৌলিক সংখ্যা নয় (1 এর বেশি) সুতরাং সংখ্যা aএবং bযেমন আছে

n = ab      (1 < a <= b < n)

দ্বারা সম্পর্কটিকে গুণিত a<=bকরে aএবং bআমরা পাই:

a^2 <= ab
 ab <= b^2

অতএব: (নোট করুন n=ab)

a^2 <= n <= b^2

সুতরাং: (নোট করুন aএবং bইতিবাচক)

a <= sqrt(n) <= b

সুতরাং যদি একটি সংখ্যা (1 এর বেশি) প্রধান না হয় এবং আমরা সংখ্যার বর্গমূল পর্যন্ত বিভাজ্যতা পরীক্ষা করি, আমরা এর একটি কারণ খুঁজে বের করব।


8

ধরা যাক যে প্রদত্ত পূর্ণসংখ্যাটি Nপ্রধান নয়,

তারপর এন দুটো কারণ মধ্যে factorized যাবে aএবং b, 2 <= a, b < Nযেমন যে N = a*b। স্পষ্টতই, উভয়ই sqrt(N)একই সাথে বেশি হতে পারে না ।

আসুন আমরা সাধারণের ক্ষতি ছাড়াই এটির aচেয়ে কম মনে করি।

এখন, আপনি যদি Nপরিসরের সাথে সম্পর্কিত কোনও বিভাজকটি খুঁজে না পান তবে এর [2, sqrt(N)]অর্থ কী?

এর অর্থ এটি হিসাবে Nকোনও বিভাজক নেই ।[2, a]a <= sqrt(N)

সুতরাং, a = 1এবং b = nএবং সংজ্ঞা দ্বারা, Nপ্রধান

...

আপনি সন্তুষ্ট না হলে আরও পড়া:

বিভিন্ন বিভিন্ন সমন্বয় (a, b)সম্ভব হতে পারে। আসুন তাদের বলুন:

(a 1 , b 1 ), (a 2 , b 2 ), (a 3 , b 3 ), ....., (a k , b k )। সাধারণত্ব ক্ষতি ছাড়া, একটি অনুমান আমি , <b আমি , 1<= i <=k

এখন, দেখাতে হবে যে পাবে Nএকটি মধ্যে যে কেউ দেখানোর জন্য যথেষ্ট মৌলিক নয় আমি আরও factorized করা যেতে পারে। এবং আমরা আরও জানতে পারি যে একটি আমি <= sqrt(N)এবং এইভাবে আপনি পর্যন্ত চেক করতে হবে sqrt(N)যা আবরণ হবে সব আমি । এবং সেইজন্য আপনি Nপ্রধান বা না তা সিদ্ধান্তে সক্ষম হবেন ।

...


7

এগুলি ফ্যাক্টরাইজেশন এবং স্কোয়ার রুটগুলির সত্যিকারের কেবলমাত্র প্রাথমিক ব্যবহার।

এটি অ্যাবস্ট্রাক্ট বলে মনে হতে পারে তবে বাস্তবে এটি কেবল এই সত্যের সাথেই নিহিত যে কোনও অ-মৌলিক সংখ্যার সর্বাধিক সম্ভাব্য ফ্যাক্টরিয়ালটি এর বর্গমূল হতে হবে কারণ:

sqrroot(n) * sqrroot(n) = n

প্রদত্ত যে, উপরে 1এবং নীচে বা উপরে কোনও সম্পূর্ণ সংখ্যা যদি sqrroot(n)সমানভাবে বিভক্ত হয় nতবে nকোনও মৌলিক সংখ্যা হতে পারে না।

সিউডো-কোড উদাহরণ:

i = 2;

is_prime = true;

while loop (i <= sqrroot(n))
{
  if (n % i == 0)
  {
    is_prime = false;
    exit while;
  }
  ++i;
}

উজ্জ্বল পর্যবেক্ষণ। গণনা শক্তি নষ্ট করার চেয়ে কোনও গণনা থেকে প্রাথমিক প্রস্থান করার জন্য guardএই হ্যান্ড স্ট্যাকওভারফ্লো.com/ a/ 25555762/4475605 এর সাথে একত্রে সুইফটে একটি বিবৃতি তৈরি করতে এই পর্যবেক্ষণটি ব্যবহার করে । পোস্ট করার জন্য আপনাকে ধন্যবাদ।
অ্যাড্রিয়ান

@ অ্যাড্রিয়ান আমাকে অবশ্যই স্বীকার করতে হবে যে এই উত্তরে ফিরে আসার পরে আমি আপনার পোস্টের সময় একটি ত্রুটি পেয়েছি। আপনি 0 তে বিভাজন করতে পারবেন না, এবং তাত্ত্বিকভাবে আপনি যদি ++i1 নম্বর হয়ে উঠতে পারেন , যা সর্বদা মিথ্যা প্রত্যাবর্তন করে (কারণ 1 সবকিছুতে বিভক্ত হয়)। আমি উপরের উত্তর সংশোধন করেছি।
সুপার ক্যাট

হ্যাঁ ... আমি সম্বোধন করেছি যে আমার কোডে ... আপনার বর্গমূলের পর্যবেক্ষণ হ'ল আপনি চালনার গণনা শুরুর আগে অ-প্রাইম মানটি ছুঁড়ে ফেলার একটি দুর্দান্ত উপায়। আমি একটি বড় সংখ্যায় মারা যাচ্ছিলাম যা সময়ের অপচয় হিসাবে প্রমাণিত হয়েছিল। আমি আরও শিখেছি যে এই অ্যালগরিদম প্রসেসিংয়ের সময়গুলি বৃহত সংখ্যায়ও হ্রাস করতে পারে। en.wikipedia.org/wiki/Miller -Rabin_primality_test
আদ্রিয়ান

6

সুতরাং একটি নম্বর এন প্রাইম কিনা তা যাচাই করতে। আমাদের কেবল N = <= SQROOT (N) সংখ্যা দ্বারা বিভাজ্য কিনা তা পরীক্ষা করে দেখতে হবে। এটি কারণ, যদি আমরা কোনও 2 টি কারণকে এন ফ্যাক্টর করে তবে এক্স এবং ওয়াই বলে। এন = এক্স ওয়াই। প্রতিটি এক্স এবং ওয়াই স্ক্রুট (এন) এর চেয়ে কম হতে পারে না কারণ তারপরে এক্স ওয়াই <এন প্রতিটি এক্স এবং ওয়াই স্ক্রুট (এন) এর চেয়ে বড় হতে পারে না কারণ তখন এক্স * ওয়াই> এন

সুতরাং একটি ফ্যাক্টর অবশ্যই এসকিউরুট (এন) এর চেয়ে কম বা সমান হতে হবে (অন্য ফ্যাক্টরটি এসকিউরোট (এন) এর চেয়ে বড় বা সমান)। সুতরাং এন প্রাইম কিনা তা পরীক্ষা করতে আমাদের কেবল এই সংখ্যাগুলি পরীক্ষা করতে হবে <= SQROOT (N)।


3

ধরা যাক আমাদের একটি নম্বর আছে "এ", যা প্রধান নয় [প্রধান / সংমিশ্রিত সংখ্যার অর্থ নয় - এমন একটি সংখ্যা যা 1 বা নিজেই বাদে অন্য সংখ্যা দ্বারা সমানভাবে বিভক্ত হতে পারে। উদাহরণস্বরূপ, 6 টি সমানভাবে 2 দ্বারা ভাগ করা যেতে পারে, বা 3 দ্বারা পাশাপাশি 1 বা 6] দ্বারা ভাগ করা যায়।

6 = 1 × 6 বা 6 = 2 × 3

সুতরাং এখন যদি "এ" প্রাইম না হয় তবে এটি অন্য দুটি সংখ্যার দ্বারা ভাগ করা যায় এবং ধরা যাক এই সংখ্যাগুলি "বি" এবং "সি"। যার অর্থ

একটি = খ * গ।

এখন যদি "খ" বা "সি" হয় তবে এর মধ্যে কোনও "বি" এর গুণমানের চেয়ে "এ" এর বর্গমূলের চেয়ে বড় এবং "সি" "এ" এর চেয়ে বড় হবে।

সুতরাং, "বি" বা "সি" সমীকরণটি "এ = বি * সি" প্রমাণ করতে "a" এর বর্গমূল হয়।

উপরের কারণগুলির কারণে, যখন আমরা পরীক্ষা করি যে কোনও সংখ্যা প্রধান কিনা বা না, তখন আমরা কেবলমাত্র সেই সংখ্যার বর্গমূল পর্যন্ত পরীক্ষা করি।


1
বি & সি <= ম্যাথ.এসকিআরটি (এন) ?; এটি বরং খ হতে হবে || সি (খ বা সি) যেহেতু যদি এন =,, বি =,, সি = ২ হয় তবে ম্যাথ.এসকিআরটি (এন)> সি।
দাগো

সংশোধনের জন্য ধন্যবাদ বন্ধু। সংশোধন করছেন। :)
আবু নাসের মোঃ শোয়েব

2

যে কোনও নম্বর দেওয়া হয়েছে n, তারপরে এর কারণগুলি খুঁজে বের করার একটি উপায় এর বর্গমূল পাওয়া p:

sqrt(n) = p

অবশ্যই, যদি আমরা pনিজেই গুণ করি, তবে আমরা ফিরে আসব n:

p*p = n

এটি আবার লিখিত হতে পারে:

a*b = n

কোথায় p = a = b। যদি aবৃদ্ধি হয়, তবে bবজায় রাখতে হ্রাস পায় a*b = n। অতএব, pউচ্চতর সীমা।

আপডেট: আমি আজ এই উত্তরটি আবার পড়ছি এবং এটি আমার কাছে আরও স্পষ্ট হয়ে উঠল। মানটি pঅগত্যা একটি পূর্ণসংখ্যা বোঝায় না কারণ যদি এটি হয় তবে তা প্রধান nহবে না। সুতরাং, pএকটি আসল সংখ্যা হতে পারে (অর্থাত্ ভগ্নাংশ সহ)। এবং পুরো ব্যাপ্তির মধ্য দিয়ে যাওয়ার পরিবর্তে nএখন আমাদের কেবলমাত্র পুরো ব্যাপ্তির মধ্য দিয়ে যেতে হবে p। অন্যটি pএকটি আয়না অনুলিপি তাই কার্যকরভাবে আমরা ব্যাপ্তিটি অর্ধেকে ফেলেছি। এবং তারপরে, আমি এখন দেখছি যে আমরা আসলে আবার কাজটি চালিয়ে square rootযেতে pএবং আরও অর্ধেক পরিসীমাতে এটি করা চালিয়ে যেতে পারি ।


1

এন অ-প্রধানমন্ত্রী হতে দিন। সুতরাং, এর কমপক্ষে দুটি সংখ্যার পূর্ণ কারণ 1 এর চেয়ে বেশি হবে greater ধরুন f> sqrt n। তারপরে এন / এফ একটি পূর্ণসংখ্যার এলটিই স্কয়ার্ট এন, এফ এর চেয়ে ছোট। সুতরাং, চ n এর ক্ষুদ্রতম গুণক হতে পারে না। কমিয়ে আনুন; n এর ক্ষুদ্রতম ফ্যাক্টরটি অবশ্যই LTE sqrt n হতে হবে।


1

যে কোনও যৌগিক সংখ্যা প্রাইমের একটি পণ্য।

যাক n = p1 * p2, কোথায় p2 > p1এবং তারা প্রাইমস।

তাহলে n % p1 === 0তারপর এন একটি যৌগিক সংখ্যা।

তাহলে n % p2 === 0কি তবে আন্দাজ n % p1 === 0!

সুতরাং কোনও উপায় নেই যদি n % p2 === 0তবে n % p1 !== 0একই সাথে। অন্য কথায়, যদি একটি সংমিশ্রণ n গুলি পি 2, পি 3 ... পাই (এর বৃহত্তর ফ্যাক্টর) দ্বারা সমানভাবে ভাগ করা যায় তবে এটি অবশ্যই তার সর্বনিম্ন গুণক পি 1 দ্বারা বিভক্ত হওয়া উচিত । দেখা যাচ্ছে যে সর্বনিম্ন ফ্যাক্টরটি p1 <= Math.square(n)সর্বদা সত্য।


যদি আপনি কৌতূহলী হন তবে এটি সত্য কেন @ লোমাপ এই উত্তরটির উত্তরটি সত্যই ব্যাখ্যা করেছিল। আমি আমার উত্তরটি যুক্ত করেছিলাম কারণ অন্যান্য সরবরাহিত উত্তরগুলি ভিজ্যুয়ালাইজ করতে এবং বোঝার জন্য আমার কাছে সত্যিই কঠিন সময় ছিল। এটি কেবল ক্লিক করেনি।
দাগো

0

একটি সংখ্যার প্রাথমিকতা পরীক্ষা করার জন্য, এন , প্রথম স্থানে নীচের মতো লুপের আশা করতে পারে:

bool isPrime = true;
for(int i = 2; i < n; i++){
    if(n%i == 0){
        isPrime = false;
        break;
    }
}

উপরের লুপটি যা করে তা হ'ল: প্রদত্ত 1 <i <n এর জন্য , n / i একটি পূর্ণসংখ্যা কিনা তা পরীক্ষা করে (বাকি 0 টি ছেড়ে যায়)। যদি এমন কোনও আই উপস্থিত থাকে যার জন্য এন / আই একটি পূর্ণসংখ্যা হয়, তবে আমরা নিশ্চিত হতে পারি যে এন একটি প্রাথমিক সংখ্যা নয়, যেখানে লুপটি সমাপ্ত হয়। যদি i, n / i এর পূর্ণসংখ্যা হয় তবে n হ'ল প্রধান।

প্রতিটি অ্যালগরিদমের মতো, আমরা জিজ্ঞাসা করি: আমরা কি আরও ভাল করতে পারি?

আসুন দেখুন উপরের লুপে কি চলছে।

আমার ক্রম চলে: i = 2, 3, 4, ..., n-1

এবং পূর্ণসংখ্যার-পরীক্ষার ক্রমটি চলে যায়: j = n / i, যা এন / 2, এন / 3, এন / 4, ..., এন / (এন -1)

যদি কিছু i = a, n / a এর পূর্ণসংখ্যা হয় তবে n / a = k (পূর্ণসংখ্যা)

বা এন = আক, স্পষ্টভাবে এন> কে> 1 (যদি কে = 1, তবে এ = এন, তবে আমি কখনই এন পৌঁছায় না; এবং যদি কে = এন হয়, তবে a = 1, তবে আমি ফর্মটি শুরু করি 2)

এছাড়াও, এন / কে = এ, এবং উপরে বর্ণিত হিসাবে, ক i এর একটি মান তাই এন> এ> 1 1

সুতরাং, a এবং k উভয়ই 1 এবং n এর মধ্যে পূর্ণসংখ্যা (একচেটিয়া)। যেহেতু, আমি এই পরিসরের প্রতিটি পূর্ণসংখ্যায় পৌঁছেছি, কিছু পুনরাবৃত্তি i = a এবং অন্য কোনও পুনরাবৃত্তিতে i = k। যদি এন এর প্রাথমিকতা পরীক্ষা ন্যূনতম (ক, কে) এর জন্য ব্যর্থ হয় তবে এটি সর্বোচ্চ (ক, কে) এর জন্যও ব্যর্থ হবে। সুতরাং আমাদের এই দুটি ক্ষেত্রে কেবল একটি পরীক্ষা করা দরকার, যতক্ষণ না মিনিট (ক, কে) = সর্বোচ্চ (ক, কে) (যেখানে দুটি চেক একের তুলনায় কমে যায়) অর্থাৎ, a = কে, কোন বিন্দুতে * a = n, যা বোঝায় a = sqrt (n)।

অন্য কথায়, যদি n এর প্রাথমিকতা পরীক্ষাটি কিছু i> = sqrt (n) (যেমন, সর্বাধিক (ক, কে)) এর জন্য ব্যর্থ হয়, তবে এটি কিছু i <= n (যেমন, মিনিট (ক) এর জন্যও ব্যর্থ হয় , K))। সুতরাং, আমরা i = 2 থেকে স্কয়ারটি (এন) এর জন্য পরীক্ষা চালিয়ে দিলে যথেষ্ট হবে।


মন্তব্যগুলিতে এবং 6 বছরের পুরানো
জবাবগুলিতে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.