Не сте регистриран! Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!

 Алгоритъм за намиране на прости числа
Автор  rxcp92 (27.06.2008 09:15) съобщение до автора
Погледнат  1673 пъти добави към любими
Оценка добави коментар
Гласове  2 изпрати на приятел
Коментари  (4) абонирай се за C-Cplusplus
     
rxcp92
     
 

Един от най-бързите алгоритми за намиране на простите числа (тези ,които се делят само на себе си и 1). Намира простите числа до 10 000 000 за 55 секунди.

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include
<cstdio>
#include
<cmath>
#include
<cstdlib>
#include
<ctime>
bool prosti(int n){
bool flag=1;
int i=3;
double p=sqrt(n);
while((i<p) && flag){
flag=(n%i)!=0;
i+=2;}
return flag;}
void main(){
int clock_t,t1,t2;
int m;
cin>>m;
t1=clock();
cout<<2<<" ";
for(int i=3;i<=m;i+=2)
if(prosti(i)) printf("%d ",i);
t2=clock();
cout<<endl<<double (t2-t1)/CLK_TCK<<endl;
system("PAUSE");}



Ключови думи: алгоритъм за намиране на прости числа C++




 1 посетител чете този скрипт (0 потребители и 1 гост)  
Активни потребители: ---
   
  

Еmail  
 

Нещо не е наред.
Гледал ли си какви числа генерира ?
Защото при мен при m=30 дава:
2,3,5,7,9,11,13,17,19,23,25,29

Аз мисля че с решето на Ератостен е най-бърз алгоритъма.

  FlyAway на 14.11.2008 16:39

Мне. Единствената оптимизация ти е проверката за остатък от нечетни делители.

  jpg на 17.07.2008 09:22

Точно това съм направил

  rxcp92 на 16.07.2008 21:16

Всъщност има доста по бърз алгоритъм. Достатъчно е да проверяваш, дали се дели на някое от по малките прости числа.

  jpg на 12.07.2008 23:31

 

 
  • Интересно от Софтуер
 
  • Интересно от myLINKS
 
 
 
 



IT-PLACE.NET © 2004 - 2008