matematykaszkolna.pl
liczby pierwsze student: ile jest liczb pierwszych mniejszych od 109?
4 gru 15:23
Blee: Dokładną czy przybliżoną? Jeżeli przybliżoną to:
 n 
π(n) ≈

(gdzie π(n) oznacza liczbę liczb pierwszych nie większych niż n)
 ln n 
4 gru 16:31
Maciess: Do 107 juz znam. Ale dalej strasznie wolno idzie. Za wolny komputeremotka
4 gru 16:45
4 gru 16:54
Mariusz: Maciess używasz sita i zliczasz ? Przesiewasz korzystając z tablicy czy listy ? Jeśli z listy to działa trochę wolniej https://pastebin.com/nYVewAB4
5 gru 10:42
Filip: Mariusz moze byc napisac klase w Javie public class CountPrimeNumbersInGivenRange { private final int from, to; public CountPrimeNumbersInGivenRange(int from, int to) { if (to < from) { throw new IllegalArgumentException("Wrong input."); } this.from = from; this.to = to; } public int countPrimeNumbers() { int count = 0; for (int i = this.from; i <= this.to; i++) { if (isPrime(i)) { count++; } return count; } private boolean isPrime(int num) { if (num < 2) { return false; } for (int i = 2; i <= num / 2; i++) { if (num % i == 0) { return false; } } return true; } }
27 gru 21:06
Mariusz: private boolean isPrime(int num) { boolean b = (num > 1); int max = (int)Math.sqrt(num); for(int i=2; i<=max && b;i++) b = b && (num%i)!=0; return b } Ja bym tak napisał funkcję do sprawdzania czy liczba jest pierwsza ale twoja wersja jest bardziej oszczędna jeżeli chodzi o liczbę zmiennych lokalnych Pamiętasz jak pisaliśmy strukturę do obsługi wielomianów ? Można by spróbować na jej podstawie napisać program do symbolicznego liczenia całek z funkcji wymiernych https://matematykaszkolna.pl/forum/412526.html Tutaj zapisałem moje przemyślenia co do programu do całkowania funkcji wymiernych
10 sty 17:57
Min. Edukacji: odpowiedź na tak postawione pytanie jest prosta: dużo
10 sty 21:07
Mariusz: using System; namespace NamespaceName { public class ClassName { public static void Main(string[] args) { int n,counter; bool[] primes; Console.WriteLine("Podaj liczbe liczb do przesiania"); int.TryParse(Console.ReadLine(),out n); primes = new bool[n+1]; Sieve(primes); counter = 0; for(int i=0;i<=n;i++) if(primes[i]) { //Console.Write("{0} ",i); counter++; } Console.WriteLine(); Console.WriteLine("Liczba liczb pierwszych : {0} ",counter); } public static void Sieve(bool[] primes) { int n = primes.Length − 1; primes[0] = false; primes[1] = false; for(int i = 2;i <= n;i++) primes[i] = true; int max = (int)Math.Sqrt(n); for(int i = 2;i <= max;i++) if(primes[i]) for(int j = i + i;j <= n;j += i) primes[j] = false; } } } Kod programu zliczającego liczby pierwsze 109 mieści się jeszcze w zakresie typu int Filip czy testowałeś swój program ze względu na czas działania ?
11 sty 12:00
Mariusz: Maciess: "Do 107 juz znam. Ale dalej strasznie wolno idzie. Za wolny komputer" a jakiego algorytmu użyłeś ? U Sedgewicka widziałem taki cytat choć nie pamiętam dokładnie czy to on to wymyślił "Good algorithms are better than supercomputers"
11 sty 12:25
Filip: nie, ale mozna dodac ... long startTime = System.nanoTime(); countPrimes(); long estimatedTime = System.nanoTime() − startTime; sout(...);
12 sty 23:05
Filip: No to klasa wielomianow juz praktycznie gotowa, zalezy w jakim jezyku chcesz to napisc − proponuje c++ lub java
12 sty 23:11
Maciess: @Mariusz Nie pamiętam jakiego algorytmu uzyłem 3 lata temu
13 sty 08:06
Mariusz: Filip i jak ci się podobają moje przemyślenia co do całkowania funkcji wymiernych ? Tutaj miałbym problem z napisaniem układów równań dla liczników w metodzie Ostrogradskiego i dla współczynników rozkładu na sumę ułamków prostych Jeśli chodzi o wybór języka to zamiast javy wolałbym C# bo ma przeciążanie operatorów a może w C bo nie trzeba by było przepisywać funkcji i struktury C# jest dość podobny do Javy Jak nie chcesz C# to chyba klasa napisana w C++ będzie wygodniejsza w użyciu Co do pierwiastków wielomianów to skrobnąłem w C# program do ich znajdowania przez znajdowanie wartości własnych pewnej macierzy Jednak zbieżność jest dość wolna zwłaszcza dla pierwiastków wielokrotnych https://pastebin.com/7cLraBVP Możliwe że gdybym dał inny warunek stopu a także inne przesunięcie to poprawiłoby to czas działania programu bądź dokładność wyniku W przypadku całkowania funkcji wymiernych dzięki zastosowaniu metody Ostrogradskiego poprawianie tego programu do znajdowania pierwiastków wielomianu nie ma aż takiego znaczenia
13 sty 21:30