Не сте регистриран!
Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!
Алгоритъм за намиране на съвършени числа
Автор
rxcp92 (27.06.2008 09:12)
съобщение до автора
Погледнат
1300 пъти
добави към любими
Оценка
добави коментар
Гласове
--
изпрати на приятел
Коментари
(0)
абонирай се за C-Cplusplus
Това е най-бързият алгоритъм за намиране на съвършените числа, използващ формулата на Евклид (съвършени числа са тези,които са равни на сумата от своите делители,например 6=1+2+3,28=1+2+4+7+14 и т.н.)
CODE 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include < iostream.h >
#include < stdlib.h >
#include < cmath >
#include < ctime >
bool prosti ( unsigned long long n ){
long long d = 3 ;
double q = sqrt ( n ) ;
bool flag = 1 ;
while (( d <= q ) && flag ){
flag = ( n % d ) != 0 ;
d += 2 ; }
return flag ; }
int main ()
{
unsigned long long p ;
cout << 6 << " \ n " ;
for ( int i = 3 ; i <= 31 ; i += 2 ){
if (( prosti ( i )) && ( prosti ( pow ( 2 , i ) - 1 ))){
p = pow ( 2 , i - 1 ) * ( pow ( 2 , i ) - 1 ) ; cout << p << " \ n " ; }}
system ( " PAUSE " ) ;
return 0 ;
}
1 посетител чете този скрипт (0 потребители и 1 гост)
Активни потребители:
---