Czy można tak ustawić cyfry?

Podzielność. Reszty z dzielenia. Kongruencje. Systemy pozycyjne. Równania diofantyczne. Liczby pierwsze i względnie pierwsze. NWW i NWD.
mint18
Użytkownik
Użytkownik
Posty: 279
Rejestracja: 16 lip 2015, o 11:21
Płeć: Mężczyzna
Lokalizacja: Lub
Podziękował: 160 razy
Pomógł: 21 razy

Czy można tak ustawić cyfry?

Post autor: mint18 »

Czy można ustawić cyfry \(\displaystyle{ 5,6,7,8,9}\) tak, że utworzona w ten sposób liczba pięciocyfrowa będzie \(\displaystyle{ k}\) - potęgą liczby całkowitej, gdzie \(\displaystyle{ k>1}\) jest liczbą całkowitą?
a4karo
Użytkownik
Użytkownik
Posty: 22210
Rejestracja: 15 maja 2011, o 20:55
Płeć: Mężczyzna
Lokalizacja: Bydgoszcz
Podziękował: 38 razy
Pomógł: 3755 razy

Czy można tak ustawić cyfry?

Post autor: a4karo »

To ćwiczenie najprościej zrobić przy pomocy Excela. Matematyki tu nie ma.
Awatar użytkownika
Medea 2
Użytkownik
Użytkownik
Posty: 2491
Rejestracja: 30 lis 2014, o 11:03
Płeć: Kobieta
Podziękował: 23 razy
Pomógł: 479 razy

Czy można tak ustawić cyfry?

Post autor: Medea 2 »

Kwadraty: \(\displaystyle{ {55696, 69696, 97969, 98596, 99856}}\). Innych możliwości nie ma.
robertm19
Użytkownik
Użytkownik
Posty: 1847
Rejestracja: 8 lip 2008, o 21:16
Płeć: Mężczyzna
Lokalizacja: Staszów/Warszawa
Podziękował: 7 razy
Pomógł: 378 razy

Czy można tak ustawić cyfry?

Post autor: robertm19 »

Medea 2, a rozwiązanie? ciekaw jestem rozwiązania?
Awatar użytkownika
Medea 2
Użytkownik
Użytkownik
Posty: 2491
Rejestracja: 30 lis 2014, o 11:03
Płeć: Kobieta
Podziękował: 23 razy
Pomógł: 479 razy

Czy można tak ustawić cyfry?

Post autor: Medea 2 »

Mathematica, chociaż rozwiązanie spokojnie przepisałabym do czystego C. Użyłam Tuples, IntegerQ i Select, nic wymyślnego.
robertm19
Użytkownik
Użytkownik
Posty: 1847
Rejestracja: 8 lip 2008, o 21:16
Płeć: Mężczyzna
Lokalizacja: Staszów/Warszawa
Podziękował: 7 razy
Pomógł: 378 razy

Czy można tak ustawić cyfry?

Post autor: robertm19 »

aha , czyli jednak numerycznie
Awatar użytkownika
vpprof
Użytkownik
Użytkownik
Posty: 492
Rejestracja: 11 paź 2012, o 11:20
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 26 razy
Pomógł: 64 razy

Czy można tak ustawić cyfry?

Post autor: vpprof »

Medea 2 pisze:Mathematica, chociaż rozwiązanie spokojnie przepisałabym do czystego C. Użyłam Tuples, IntegerQ i Select, nic wymyślnego.
Chyba jeszcze FromDigits, co?
Awatar użytkownika
Medea 2
Użytkownik
Użytkownik
Posty: 2491
Rejestracja: 30 lis 2014, o 11:03
Płeć: Kobieta
Podziękował: 23 razy
Pomógł: 479 razy

Czy można tak ustawić cyfry?

Post autor: Medea 2 »

Owszem! W moim wcześniejszym rozwiązaniu ręcznie przeszukiwałam wykładniki do siedemnastki (bo \(\displaystyle{ 2^{17}>99999}\)), ale to nie było najmądrzejsze posunięcie. Liczb do sprawdzenia dużo tu nie ma, więc wygodniej używa się takiego kodu:

Kod: Zaznacz cały

Select[Map[{GCD@@Transpose[FactorInteger[#]][[2]],#}&,FromDigits/@Tuples[Range[5,9],5]],#[[1]]>1&]
Awatar użytkownika
vpprof
Użytkownik
Użytkownik
Posty: 492
Rejestracja: 11 paź 2012, o 11:20
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 26 razy
Pomógł: 64 razy

Czy można tak ustawić cyfry?

Post autor: vpprof »

No właśnie ja też przeszukiwałem ręcznie wykładniki, ostatecznie zrobiłem tabelkę:

Kod: Zaznacz cały

IleCyfr := 5

Table[{{"Wykładnik=" <> ToString[n]}, 
     {Select[FromDigits[#] & /@ Tuples[Range[5, 9], IleCyfr], 
     IntegerQ[#^(1/n)] &]}},
  {n, 2, IntegerPart[Log[2, 10^IleCyfr]]}] // TableForm
Twoje rozwiązanie Medea_2 jest ładne, ale zauważ, że dla sześciocyfrowych kombinacji wyrzuca jeden sześcian pomiędzy kwadratami, co jest mniej czytelne

EDIT: Chociaż z drugiej strony, jest ono na pewno szybsze, bo przebiega cały zbiór liczb tylko raz.
Awatar użytkownika
Medea 2
Użytkownik
Użytkownik
Posty: 2491
Rejestracja: 30 lis 2014, o 11:03
Płeć: Kobieta
Podziękował: 23 razy
Pomógł: 479 razy

Czy można tak ustawić cyfry?

Post autor: Medea 2 »

Nawet jeżeli wyrzuca sześcian, to mówi o tym - w ostateczności można dodać sortowanie na koniec. Twoje rozwiązanie wykonuje się ponad sekundę, moje (powyższe) jest cztery, pięć razy szybsze. Niżej dodaję jeszcze szybsze, ale teraz nie wiadomo, o jaki wykładnik chodzi (wykonuje się tak prędko, że nie jestem w stanie zmierzyć tego):

Kod: Zaznacz cały

Select[Flatten[Table[Select[Range[2, Floor[99999^(1/k)] + 1]^k, # >= 55555 &], {k, 2, 17}]], Min[IntegerDigits[#]] >= 5 &]
Wyjaśniam z góry, że \(\displaystyle{ 17}\) to logarytm \(\displaystyle{ \log_2 99999}\) po zaokrągleniu.
ODPOWIEDZ