[C++] Libcza dzielników
-
- 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
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
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
- Sokół
- 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
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.
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.
-
- 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
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
I problem nie jest taki, że mam odszukać dzielniki tylko liczbę dzielników
- dabros
- 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
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
\(\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
-
- 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
No dobra, ale jak to zrobić dla 10 liczb? Bo za bardzo mi to nie wychodzi z więcej niż jedną liczbą ;/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)}\)
-
- 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
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.
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.
-
- 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
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