Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Coding puzzle 3
Message
 
 
To
06/06/2002 10:43:53
Hilmar Zonneveld
Independent Consultant
Cochabamba, Bolivia
General information
Forum:
Visual FoxPro
Category:
Other
Title:
Miscellaneous
Thread ID:
00665235
Message ID:
00665454
Views:
18
>>>>I meant prime numbers, just didn't know the correct term. E.g. each number has only two dividors (1 and itself).
>>>>
>>>>1
>>>>2
>>>>3
>>>>5
>>>>7
>>>>11
>>>>13
>>>>etc.
>>>
>>>It is convenient to have a UDF that returns .T. if the input is a prime number.
>>>
>>>An algorithm that is reasonable in terms of speed and simplicity, for numbers up to several millions, is:
>>>
>>>Divide input by 2
>>>
>>>Divide input by all odd numbers, from 3 to sqrt(input)
>>>
>>>Return .F. immediately if any of the divisions gives no remainder.
>>>
>>>You can then search for each prime number with a loop, also starting at 2, and then:
>>>
>>>
>>>for i = 3 to MaxRange step 3
>>>  if not seek(i) and IsPrime(i)
>>>    insert into...
>>>  endif
>>>next
>>>
>>>
>>>Hilmar.
>>
>>Hi Hilmar,
>>
>>I don't think, your method would be the most efficient. I was thinking about this problem a little bit, and here is a draft idea:
>>
>>Say, we have a table with N prime numbers in sequence (should not be any ommissions in this table). To define, if the number is prime or not, we can try to divide this number by each of the known prime numbers up till the squar root of the number. If this number would be prime, we would insert it into this Lookup Prime numbers table. However, I'm not yet convinced, that this one is the best algorithm...
>
>That will always work up to a certain point only: if you want to test numbers up to 1e6, whether they are prime numbers, then your table of basic prime numbers must go up to 1e3. For numbers above 1e6, your table won't work any longer.
>
>Hilmar.

Right, thanks.
If it's not broken, fix it until it is.


My Blog
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform