একটি সংখ্যাটি প্রধান বা না তা পরীক্ষা করার জন্য কেন আমাদের পরীক্ষা করতে হবে যে এটি কেবলমাত্র সংখ্যার বর্গমূল পর্যন্ত বিভাজ্য?
floor(sqrt(n))
।
একটি সংখ্যাটি প্রধান বা না তা পরীক্ষা করার জন্য কেন আমাদের পরীক্ষা করতে হবে যে এটি কেবলমাত্র সংখ্যার বর্গমূল পর্যন্ত বিভাজ্য?
floor(sqrt(n))
।
উত্তর:
যদি সংখ্যাটি 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)
করতে পারেন।
m = sqrt(n)
তাহলে বলা যাক m × m = n
। এখন যদি n
প্রাইম না হয় তবে তাই n
লেখা যেতে পারে । লক্ষ করুন যে, যেহেতু একটি বাস্তব সংখ্যা , এবং প্রাকৃতিক নম্বর আছে।n = a × b
m × m = a × b
m
n
a
b
এখন 3 টি মামলা হতে পারে:
সমস্ত 3 ক্ষেত্রে min(a, b) ≤ m
,। তাই যদি আমরা অবধি অনুসন্ধান করি তবে আমরা m
কমপক্ষে একটি ফ্যাক্টর সন্ধান করতে বাধ্য n
, যা n
প্রাইম নয় এটি প্রদর্শন করার জন্য যথেষ্ট ।
n is not a prime
, এবং এটি প্রমাণ করুন, অন্যথায় এটি প্রধান বিষয়।
আরও স্বজ্ঞাত ব্যাখ্যাটি হ'ল: -
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 টির চেয়ে বড়, তবে বর্গমূলের চেয়ে কম বা সমান পরীক্ষা করতে হবে, ধরে নিই যে আপনি কেবল বিজোড় সংখ্যা পরীক্ষা করছেন।
`
ধরুন 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 এর বেশি) প্রধান না হয় এবং আমরা সংখ্যার বর্গমূল পর্যন্ত বিভাজ্যতা পরীক্ষা করি, আমরা এর একটি কারণ খুঁজে বের করব।
ধরা যাক যে প্রদত্ত পূর্ণসংখ্যাটি 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
প্রধান বা না তা সিদ্ধান্তে সক্ষম হবেন ।
...
এগুলি ফ্যাক্টরাইজেশন এবং স্কোয়ার রুটগুলির সত্যিকারের কেবলমাত্র প্রাথমিক ব্যবহার।
এটি অ্যাবস্ট্রাক্ট বলে মনে হতে পারে তবে বাস্তবে এটি কেবল এই সত্যের সাথেই নিহিত যে কোনও অ-মৌলিক সংখ্যার সর্বাধিক সম্ভাব্য ফ্যাক্টরিয়ালটি এর বর্গমূল হতে হবে কারণ:
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 এর সাথে একত্রে সুইফটে একটি বিবৃতি তৈরি করতে এই পর্যবেক্ষণটি ব্যবহার করে । পোস্ট করার জন্য আপনাকে ধন্যবাদ।
++i
1 নম্বর হয়ে উঠতে পারেন , যা সর্বদা মিথ্যা প্রত্যাবর্তন করে (কারণ 1 সবকিছুতে বিভক্ত হয়)। আমি উপরের উত্তর সংশোধন করেছি।
সুতরাং একটি নম্বর এন প্রাইম কিনা তা যাচাই করতে। আমাদের কেবল N = <= SQROOT (N) সংখ্যা দ্বারা বিভাজ্য কিনা তা পরীক্ষা করে দেখতে হবে। এটি কারণ, যদি আমরা কোনও 2 টি কারণকে এন ফ্যাক্টর করে তবে এক্স এবং ওয়াই বলে। এন = এক্স ওয়াই। প্রতিটি এক্স এবং ওয়াই স্ক্রুট (এন) এর চেয়ে কম হতে পারে না কারণ তারপরে এক্স ওয়াই <এন প্রতিটি এক্স এবং ওয়াই স্ক্রুট (এন) এর চেয়ে বড় হতে পারে না কারণ তখন এক্স * ওয়াই> এন
সুতরাং একটি ফ্যাক্টর অবশ্যই এসকিউরুট (এন) এর চেয়ে কম বা সমান হতে হবে (অন্য ফ্যাক্টরটি এসকিউরোট (এন) এর চেয়ে বড় বা সমান)। সুতরাং এন প্রাইম কিনা তা পরীক্ষা করতে আমাদের কেবল এই সংখ্যাগুলি পরীক্ষা করতে হবে <= SQROOT (N)।
ধরা যাক আমাদের একটি নম্বর আছে "এ", যা প্রধান নয় [প্রধান / সংমিশ্রিত সংখ্যার অর্থ নয় - এমন একটি সংখ্যা যা 1 বা নিজেই বাদে অন্য সংখ্যা দ্বারা সমানভাবে বিভক্ত হতে পারে। উদাহরণস্বরূপ, 6 টি সমানভাবে 2 দ্বারা ভাগ করা যেতে পারে, বা 3 দ্বারা পাশাপাশি 1 বা 6] দ্বারা ভাগ করা যায়।
6 = 1 × 6 বা 6 = 2 × 3
সুতরাং এখন যদি "এ" প্রাইম না হয় তবে এটি অন্য দুটি সংখ্যার দ্বারা ভাগ করা যায় এবং ধরা যাক এই সংখ্যাগুলি "বি" এবং "সি"। যার অর্থ
একটি = খ * গ।
এখন যদি "খ" বা "সি" হয় তবে এর মধ্যে কোনও "বি" এর গুণমানের চেয়ে "এ" এর বর্গমূলের চেয়ে বড় এবং "সি" "এ" এর চেয়ে বড় হবে।
সুতরাং, "বি" বা "সি" সমীকরণটি "এ = বি * সি" প্রমাণ করতে "a" এর বর্গমূল হয়।
উপরের কারণগুলির কারণে, যখন আমরা পরীক্ষা করি যে কোনও সংখ্যা প্রধান কিনা বা না, তখন আমরা কেবলমাত্র সেই সংখ্যার বর্গমূল পর্যন্ত পরীক্ষা করি।
যে কোনও নম্বর দেওয়া হয়েছে 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 এর চেয়ে বেশি হবে greater ধরুন f> sqrt n। তারপরে এন / এফ একটি পূর্ণসংখ্যার এলটিই স্কয়ার্ট এন, এফ এর চেয়ে ছোট। সুতরাং, চ n এর ক্ষুদ্রতম গুণক হতে পারে না। কমিয়ে আনুন; n এর ক্ষুদ্রতম ফ্যাক্টরটি অবশ্যই LTE sqrt n হতে হবে।
যে কোনও যৌগিক সংখ্যা প্রাইমের একটি পণ্য।
যাক 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)
সর্বদা সত্য।
একটি সংখ্যার প্রাথমিকতা পরীক্ষা করার জন্য, এন , প্রথম স্থানে নীচের মতো লুপের আশা করতে পারে:
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 থেকে স্কয়ারটি (এন) এর জন্য পরীক্ষা চালিয়ে দিলে যথেষ্ট হবে।
n = a*b
এবংa <= b
তারপরa*a <= a*b = n
।