[C++] Libcza dzielników

DerSchmetterlig
Użytkownik
Użytkownik
Posty: 18
Rejestracja: 25 gru 2007, o 21:56
Płeć: Mężczyzna
Lokalizacja: Gniezno
Podziękował: 1 raz
Pomógł: 1 raz

[C++] Libcza dzielników

Post autor: DerSchmetterlig »

Mam taki problem
Muszę napisać program który poda ilość dzielników liczy powstałej przez pomnożenie 10 liczb od 1 do 10 000. I tu się zaczyna problem :/
Tablica int nie pomieści liczby która w najgorszym wypadku da 1*10^40 więc trzeba to zrobić jakoś bez znajdywania tej liczby.
Można chyba także stworzyć nową tablicę, większą ale niestety też nie wiem jak to zrobić...

Proszę o pomoc i jakieś porady
Awatar użytkownika
Sokół
Użytkownik
Użytkownik
Posty: 451
Rejestracja: 17 wrz 2006, o 19:22
Płeć: Mężczyzna
Lokalizacja: Zielona Góra
Podziękował: 15 razy
Pomógł: 55 razy

[C++] Libcza dzielników

Post autor: Sokół »

rozloz kazda liczbe na czynniki.
Np. dajmy na to, ze wyszlo (dla ulatwienia niech beda 2 liczby)
57*117
57=3*19
117=3*3*13

57*117=3*19*3*3*13

i teraz widzisz, że dzieli się przez 3, 19, wiadomo też, że przez 57 i 117, dalej mnożysz dzielniki - dzieli się przez 9*19, 27*19, 27*13 i tak dalej. Ale jak Ci wyjdzie liczba 1*10^40, no to jej dzielnikiem też jest ona sama

tak btw. zapis int tablica[x] nie mowi, ze tablica jest integer, int odnosi sie do elementow tablicy. Czyli mozesz stworzyc np. double tablica[x] - i to bedzie znaczyc, ze jest tablica x elementow typu double.
DerSchmetterlig
Użytkownik
Użytkownik
Posty: 18
Rejestracja: 25 gru 2007, o 21:56
Płeć: Mężczyzna
Lokalizacja: Gniezno
Podziękował: 1 raz
Pomógł: 1 raz

[C++] Libcza dzielników

Post autor: DerSchmetterlig »

tak wiem, że do elementów tablicy ale to nie zmienia faktu, że liczy 1*10^40 nie da się zapisać za pomocą zmiennej int, więc nie da sie wykonać dzielenia modulo

I problem nie jest taki, że mam odszukać dzielniki tylko liczbę dzielników
Awatar użytkownika
dabros
Użytkownik
Użytkownik
Posty: 1121
Rejestracja: 2 cze 2006, o 21:41
Płeć: Mężczyzna
Lokalizacja: Lublin
Podziękował: 48 razy
Pomógł: 4 razy

[C++] Libcza dzielników

Post autor: dabros »

moze skorzystaj z faktu, ze:
\(\displaystyle{ m=p_{1}^{k_{1}}p_{2}^{k_{2}}...p_{n}^{k_{n}}}\), gdzie: m- dana liczba, p1,p2,...,pn - jej kolejne dzielniki pierwsze; wtedy liczba dzielnikow danej liczby to:
\(\displaystyle{ q(m)=(k_{1}+1)(k_{2}+1)...(k_{n}+1)}\)

a poza tym zadanie wymaga chyba zaimplementowania własnej arytmetyki wielkich liczb
więcej na
DerSchmetterlig
Użytkownik
Użytkownik
Posty: 18
Rejestracja: 25 gru 2007, o 21:56
Płeć: Mężczyzna
Lokalizacja: Gniezno
Podziękował: 1 raz
Pomógł: 1 raz

[C++] Libcza dzielników

Post autor: DerSchmetterlig »

dabros pisze:moze skorzystaj z faktu, ze:
\(\displaystyle{ m=p_{1}^{k_{1}}p_{2}^{k_{2}}...p_{n}^{k_{n}}}\), gdzie: m- dana liczba, p1,p2,...,pn - jej kolejne dzielniki pierwsze; wtedy liczba dzielnikow danej liczby to:
\(\displaystyle{ q(m)=(k_{1}+1)(k_{2}+1)...(k_{n}+1)}\)
No dobra, ale jak to zrobić dla 10 liczb? Bo za bardzo mi to nie wychodzi z więcej niż jedną liczbą ;/
Awatar użytkownika
dabros
Użytkownik
Użytkownik
Posty: 1121
Rejestracja: 2 cze 2006, o 21:41
Płeć: Mężczyzna
Lokalizacja: Lublin
Podziękował: 48 razy
Pomógł: 4 razy

[C++] Libcza dzielników

Post autor: dabros »

mozesz zawsze skorzystac ze wskazowki zaproponowanej przez Sokół,
smiechowiec
Użytkownik
Użytkownik
Posty: 374
Rejestracja: 21 cze 2007, o 11:28
Płeć: Mężczyzna
Lokalizacja: Łostowice
Pomógł: 146 razy

[C++] Libcza dzielników

Post autor: smiechowiec »

Definiujemy jedną tablicę typu int np int t1[10] - w której zapamiętamy 10 liczb iloczynu.
Każda liczba do 10000 może mieć co najwyżej 6 dzielników będących różnymi liczbami pierwszymi.
Definiujemy dla każdej liczby dwie dodatkowe tablice sześcioelementowe typu int t2[6], t3[6].
Pierwsza t2 będzie zawierać podzielniki liczby t1, druga będzie zawierać ich krotność.
To wystarczy do utworzenia tablicy podzielników iloczynu wszystkich liczb t1 i ich krotności, co pozwoli przedstawić nam wynik w postaci iloczynu liczb typu int wg wzoru podanego przez Dabros.
Jeśli to będzie konieczne można pokusić się o zapis tej liczby korzystając z gotowych bibliotek lub tworząc taką liczbę samodzielnie jako łańcuch znaków.
DerSchmetterlig
Użytkownik
Użytkownik
Posty: 18
Rejestracja: 25 gru 2007, o 21:56
Płeć: Mężczyzna
Lokalizacja: Gniezno
Podziękował: 1 raz
Pomógł: 1 raz

[C++] Libcza dzielników

Post autor: DerSchmetterlig »

smiechowiec pisze:Definiujemy jedną tablicę typu int np int t1[10] - w której zapamiętamy 10 liczb iloczynu.
Każda liczba do 10000 może mieć co najwyżej 6 dzielników będących różnymi liczbami pierwszymi.
Definiujemy dla każdej liczby dwie dodatkowe tablice sześcioelementowe typu int t2[6], t3[6].
Pierwsza t2 będzie zawierać podzielniki liczby t1, druga będzie zawierać ich krotność.
To wystarczy do utworzenia tablicy podzielników iloczynu wszystkich liczb t1 i ich krotności, co pozwoli przedstawić nam wynik w postaci iloczynu liczb typu int wg wzoru podanego przez Dabros.
Jeśli to będzie konieczne można pokusić się o zapis tej liczby korzystając z gotowych bibliotek lub tworząc taką liczbę samodzielnie jako łańcuch znaków.


Mógłbyś zapisać jako program?

[ Dodano: 30 Grudnia 2007, 18:57 ]
Już dałem rade sam

Do zamknięcia
ODPOWIEDZ