matematykaszkolna.pl
liczby pom: Wykazać, że liczba 4545+5454 jest liczba złożoną.
6 mar 20:21
Goblin: Moze tak 5454 ostatnia cyfra tej liczby to 5 4545 ostatnia cyfra tej liczby to 4 bo 41=4 42=16 43=64 44=256 widac ze 4 i 6 powtrza sie co 2 wiec ostania cyfra 4544 bedzie 6 a potegi 545 bedzie 4 ostatnia cyfra calej liczby to 9 a 9 jest liczba zlozona Z drugiej strony 19 tez na koncu ma 9 a jest liczba pierwsza Moze ktos jednak inny sie wypowie .
6 mar 20:39
Mila: Spróbuj z wzoru skróconego mnożenia ; a=2545, b=5452
6 mar 20:41
ICSP: 4a4 + b4 = 4a4 + 4a2b2 + b4 − 4a2b2 = (2a2 + b2)2 − (2ab)2 = = (2a2 − 2ab + b2)(2a2 + 2ab + b2) Podstaw a = 4136 , b = 545
6 mar 20:48
ICSP: Ponadto uzasadnij, że mniejsza z liczb występujących w otrzymanym iloczynie jest większa od 1.
6 mar 20:51
Goblin: Dziękuje bardzo
6 mar 20:52
Mariusz: Gdybyś chciał napisać program to wprawdzie wypisze ci tę liczbę szybko ale już rozkładać będzie ją wolno Gdy Mila napisała o wzorze skróconego mnożenia to od razu pomyślałem że prędzej coś się wymyśli rozkładając sumę czwartych potęg niż sumę kwadratów
6 mar 21:21
Filip: Można, przykładowo w Javie: 4545 = 132646340727479086843491350425709646347997445989428178686378873996 8567473392814305391151570625738339091658033491586658542484250541331536129995 6590178516238986216565917389053058381703265785821026139489414576389820813279 7224337206606966360215158233206843513278635939443213817226602237462139493631 59606624666472133934520303274164224 5454 = 88223850625 Tylko teraz przydałoby się napisać metodę, która doda nam te dwie liczby
6 mar 22:14
ICSP: BigInteger
6 mar 22:24
Mila: 4545+5454 =(2545)2+(5452)2= =(2545+5452)2−2*2545*5452= =(2545+5452)2−2546*5452= =(2545+5452)2−(2273*545)2= =(2545+5452−2273*545)*(2545+5452+2273*545)
6 mar 22:35
Mariusz: using System; using System.Numerics; namespace NamespaceName { public class ClassName { public static void Main(string[] args) { BigInteger p,s = 1,t = 1; for(int i = 0;i < 545;i++) s *= 4; for(int i = 0;i < 4;i++) t *= 545; s += t; Console.WriteLine("{0}",s); p = 2; while(p < s && s % t != 0) p++; Console.WriteLine("{0}",p); Console.ReadKey(); } } } W C# tak to by wyglądało kompilacja csc /r:System.Numerics.dll i tak jak napisałem program wyświetli tę liczbę dość szybko jednak rozkładać ją będzie dość wolno
6 mar 23:15
Filip: BigInteger się dobrze sprawdziło, jednak przerwałem szukanie dzielników sumy tych dwóch liczb, ponieważ trochę to trwało, jedyne jakie udało mi się znaleźć to: [73, 9677, 679369, ...];
6 mar 23:17
Mariusz: W C# zwrócił to samo i to w zbliżonym czasie Wg mnie C# i Java to dość podobne języki (różnice oczywiście też są) Ja tutaj zrobiłem literówkę A jak ty sprawdzasz te dzielniki ? Wygenerowałeś listę liczb pierwszych czy inkrementujesz licznik
6 mar 23:38
Filip: Tak wygląda mój fragment kodu wypisujący dzielniki − "chyba" działa on poprawnie for (BigInteger currentDivisor = new BigInteger("2"); currentDivisor.compareTo(numberSqrt) < 0; currentDivisor = currentDivisor.add(BigInteger.ONE)) { BigInteger rest = number.mod(currentDivisor); while (rest.equals(comparison)) { System.out.print(currentDivisor + " "); number = number.divide(currentDivisor); rest = number.mod(currentDivisor); } }
6 mar 23:47
Mariusz: Tak się zastanawiam co może spowalniać algorytm ale wyszukiwanie liczb pierwszych też by trochę trwało Zajmowałeś się kiedyś łamaniem szyfru RSA ?
6 mar 23:53
mydlix: Można wiedzieć, z jakiej książki pochodzi to zadanie?
9 mar 23:57
Filip: Mariusz nie, jednak próbowałem rozbić na mniejsze liczby i szukać dzielników przykładowo 2545 + 5452 − 2273 * 545, znalazło mi 679369, później wyłączyłem wiadomo czemu
10 mar 00:08
F&M: @ICSP Jak to się tam nazywało? Zależność Sophie Germain ?
10 mar 08:45
Kacper: Bardziej tożsamość, ale tak, masz rację.
10 mar 09:36