[C++] Liczby doskonałe

KillerQueen_
Użytkownik
Użytkownik
Posty: 97
Rejestracja: 19 lut 2011, o 21:23
Płeć: Kobieta
Lokalizacja: Biegun Północny

[C++] Liczby doskonałe

Post autor: KillerQueen_ »

Witam!
Mam do napisania program wyszukujący liczby doskonałe i wypisujący je na ekranie. Problem polega na tym, że trzeba zrobić to zadanie z użyciem liczb Mersenne'a, a ja nie wiem kompletnie jak to zrobić.
Z góry dziękuję za pomoc!
Xitami

[C++] Liczby doskonałe

Post autor: Xitami »

prawdziwy news w teorii liczb:
jeżeli \(\displaystyle{ 2^p-1}\) jest liczbą pierwszą, to \(\displaystyle{ \left(2^p-1\right)2^{p-1}}\) jest liczbą doskonałą, jak na razie tylko takie znamy
KillerQueen_
Użytkownik
Użytkownik
Posty: 97
Rejestracja: 19 lut 2011, o 21:23
Płeć: Kobieta
Lokalizacja: Biegun Północny

[C++] Liczby doskonałe

Post autor: KillerQueen_ »

No popatrz, gdzie tego newsa znalazłeś?
Oświecę Cię dalej: wiem czym są liczby doskonałe i na czym polega algorytm Mersenne'a, nie wiem tylko jak to zapisać.
Xitami

[C++] Liczby doskonałe

Post autor: Xitami »

szukasz p dla którego \(\displaystyle{ 2^p-1}\) jest pierwsze
algorytm Mersene'a? o cóż za zwierz?
KillerQueen_
Użytkownik
Użytkownik
Posty: 97
Rejestracja: 19 lut 2011, o 21:23
Płeć: Kobieta
Lokalizacja: Biegun Północny

[C++] Liczby doskonałe

Post autor: KillerQueen_ »

Okej, wychodzi ze mnie blondynka, a w C++:
"call of overloaded `pow(int, int&)' is ambiguous"
abc666

[C++] Liczby doskonałe

Post autor: abc666 »

Nazwij swoją funkcję inaczej niż pow
KillerQueen_
Użytkownik
Użytkownik
Posty: 97
Rejestracja: 19 lut 2011, o 21:23
Płeć: Kobieta
Lokalizacja: Biegun Północny

[C++] Liczby doskonałe

Post autor: KillerQueen_ »

pow to nie moja funkcja, tylko Pow jako power, czyli potęgowanie, więc sama tego nie zmienię.
abc666

[C++] Liczby doskonałe

Post autor: abc666 »

Pokaż swój kod najlepiej.
Xitami

[C++] Liczby doskonałe

Post autor: Xitami »

2^p robi się tak: n=1<<p;
KillerQueen_
Użytkownik
Użytkownik
Posty: 97
Rejestracja: 19 lut 2011, o 21:23
Płeć: Kobieta
Lokalizacja: Biegun Północny

[C++] Liczby doskonałe

Post autor: KillerQueen_ »

Jezu, mój blond umysł jest nie do pokonania chyba.

Kod: Zaznacz cały

void liczby_dosk(void){
    float x;
    int n;
do{
 for(int i=2;i*i<=p;p++)
     if(p%i==0)
   if((i=1<<p)==0)
     x=(i=1<<p-1)*((i=1<<p)-1);
     cout<<x<<endl;       
 
}while(p>=2&&p<=10);    
} 
Działać działa, ale nic się nie wyświetla.-- 8 paź 2011, o 20:51 --Znajdzie się ktoś, kto poprawi ten nieszczęsny kod?
Ostatnio zmieniony 8 paź 2011, o 19:39 przez Anonymous, łącznie zmieniany 1 raz.
Powód: Kod w [code][\code]!
Xitami

[C++] Liczby doskonałe

Post autor: Xitami »

na cóż, każdy program działa.

Kod: Zaznacz cały

using namespace std;
#include <iostream>
#define osiem (8>>2)
int main(){
        unsigned int Mersenne,Lucas,Euler;
        unsigned long long int Lehmer,Gaus;
        
        Gaus=Mersenne=1<<1;Euler=Gaus+'/'/'/';
        do{     Lehmer=1<<(('<'/'<')<<1);
                for( Lucas=osiem+1; Lucas<=Mersenne; Lucas++)
                        Lehmer=(Lehmer*Lehmer-osiem)% Euler;
                if( Lehmer==0 || Mersenne==osiem )
                        cout << Gaus*Euler << '\n';
                Gaus=Euler; Euler<<=1;
                Mersenne++;Euler++;Gaus++;
        } while( Mersenne<=037);}
KillerQueen_
Użytkownik
Użytkownik
Posty: 97
Rejestracja: 19 lut 2011, o 21:23
Płeć: Kobieta
Lokalizacja: Biegun Północny

[C++] Liczby doskonałe

Post autor: KillerQueen_ »

Nie działa.
Ostatnio zmieniony 8 paź 2011, o 20:11 przez KillerQueen_, łącznie zmieniany 1 raz.
Xitami

[C++] Liczby doskonałe

Post autor: Xitami »

Kod: Zaznacz cały

void liczby_dosk(void){
	float x;
	int n;
	do{	for(int i=2; i*i <= p; p++)  // "p" gallus anonimus, kto wie jakie jest pe?
				if(p%i==0)           // j.w., a na dodatek nie pierwszy, bo podzielny przez "i"
					if((i=1<<p)==0) // tu może być niespodzianka bo np. 1 << 33 == 2, bo 33%32==1
						x=(i=1<<p-1)*((i=1<<p)-1); //jest pomysł, ale wolelibyśmy dokładny wynik
                                          // a i tak pomnożą się liczby całkowite i cały misterny plan pójdzie w p...
					cout<<x<<endl; //czasem coś tu będzie, a czasem nie       
	} while( p>=2 && p<=10 );    
}
Może więc zacznijmy od początku.

-- 8 października 2011, 20:12 --

Przepraszam Królowo, a co nie działa?
KillerQueen_
Użytkownik
Użytkownik
Posty: 97
Rejestracja: 19 lut 2011, o 21:23
Płeć: Kobieta
Lokalizacja: Biegun Północny

[C++] Liczby doskonałe

Post autor: KillerQueen_ »

Przed chwilą nie działo w Dev C++ oO.
Odbiegając od tematu, mam wrażenie, że sarkastycznie użyłeś 'Królowo', bez względu na mój nick.

Dzięki za olbrzymią pomoc!
Xitami

[C++] Liczby doskonałe

Post autor: Xitami »

Zawsze do usług, Pani
DevC to nie jest dobre towarzystwo dla młodego królewicza.
Jak więc, wyprowadzimy Twoje Pani chrome pacholę na dojrzałego rycerza by konkurować mógł z innymi na ubitej ziemi algorytmicznych krain?
ODPOWIEDZ