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