मुझे वर्षों से बेहतर प्राइम नंबर पहचानकर्ता खोजने की समस्या में रूचि है। मुझे एहसास है कि यह अकादमिक शोध और अध्ययन का एक बड़ा क्षेत्र है - इसमें मेरी रुचि वास्तव में मजेदार है। सी (नीचे) में, संभावित समाधान पर मेरा पहला प्रयास था।क्या आप प्राइम नंबर
मेरा सवाल है, क्या आप एक सुधार का सुझाव दे सकते हैं (नेट पर कुछ अन्य संदर्भ उद्धृत किए बिना, मैं वास्तविक सी कोड की तलाश में हूं)? मैं इससे प्राप्त करने की कोशिश कर रहा हूं, इस तरह के समाधान की प्रदर्शन जटिलता निर्धारित करने की बेहतर समझ है।
क्या मैं यह निष्कर्ष निकालने में सही हूं कि इस समाधान की जटिलता ओ (एन^2) है?
#include <stdio.h>
#include <math.h>
/* isprime */
/* Test if each number in the list from stdin is prime. */
/* Output will only print the prime numbers in the list. */
int main(int argc, char* argv[]) {
int returnValue = 0;
int i;
int ceiling;
int input = 0;
int factorFound = 0;
while (scanf("%d", &input) != EOF) {
ceiling = (int)sqrt(input);
if (input == 1) {
factorFound = 1;
}
for (i = 2; i <= ceiling; i++) {
if (input % i == 0) {
factorFound = 1;
}
}
if (factorFound == 0) {
printf("%d\n", input);
}
factorFound = 0;
}
return returnValue;
}
यह वास्तव में है 'O (n^0.5)'। – st0le
यह वास्तव में 'ओ (एन) 'है। एल्गोरिदम 'ओ (एन^0.5) 'है लेकिन जबकि लूप इसे' ओ (एम * एन^0.5) 'या' ओ (एम)' बनाता है। – Ishtar
यह सबसे बुनियादी प्रधान संख्या जनरेटर का एक रूप है। समस्या यह है कि, जैसे एन बहुत बड़ा हो जाता है, यह एल्गोरिदम बहुत धीरे-धीरे चलता है। नीचे वर्णित एकेएस परीक्षण, साथ ही सामान्य रूप से चलनी सिद्धांत देखें। आप जो भी करने की कोशिश कर रहे हैं उसके आधार पर, मैं अलग-अलग उपयोगों के लिए अलग-अलग दृष्टिकोणों का भी उपयोग करता हूं: क्या आपको छोटे या बड़े प्राइम्स की आवश्यकता है? शायद primes या "असली" primes? एल्गोरिदम और कार्यान्वयन आवश्यकताओं के आधार पर अलग-अलग होंगे। –