Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Zdravim, mam za ulohu spravit program, ktory bude hladat prvocisla cez Eratoshenovo sito a to tak ze zadam maximalne cislo po ktore sa maju vybrat prvocisla napr. 100 a vypise to prvocisla, mozem pouzit cykli (for, while a dowhile), polia a podmienky. Na zaciatku som vytvoril
public void Prvocisla ()
{
System.out.println ("Zadaje cislo po ktore chcete vycislit prvocisla: ");
int cislo = s.nextInt();
int[] Pole = new int[cislo];
ale potom by som potreboval priradit pre kazde pole hodnotu to som chcel spravit takto
while ( i != cislo)
{
Pole[i] = i+1;
}
ale to je nezmysel, lebo i by malo byt o jedno cislo nizsie ako cislo ktore si urcim ako interval, a rozpisovat
Pole [0] = 1;
Pole [1] = 2; atd. to je nezmyselne a zdlhujuce
a potom som chcel spravit
for (int a = Pole[k]; a <= cislo; k++)
{
if (Pole[k] % 2 != 0)
Sito[j] = Pole[k];
System.out.print (Sito[j] + " ");
}
v Sito [j] by boli vsetky neparne cisla z Pole [k] ale hned mi to vylucilo 2 z prvocisel a to je uz chyba, a celkovo postup je dost blby malo by to pocitat 2+2+2+2+2..... a vylucit vsetku nasobky 2, a potom by to pokracovalo od 3 a ostatnych cisel ktore ostali.
Ak ma niekto radu, postup, alebo napad bol by som Vam velmi vdacny, mam cas do pondelka.
Vopred dakujem za kazdu radu
Offline

↑ Spown3:
Zdravím, koukám na ty útržky kódu a moc to nestíhám...
Ten tvůj while cyklus dělá to, že odněkud (odkud?) vezme hodnotu i a porovná ji s číslem cislo. Pokud podmínka projde, tak buď přiřadí do Pole[i] hodnotu i+1, nebo skončí chybou, protože lezeš mimo indexy pole. Vzhledem k tomu, že dál s i nic neděláš, tak to poběží donekonečna (pořád ukládá tu samou hodnotu na to samé místo). Navrhuju použít raději for cyklus.
A ten for cyklus je taky vyvedený. 3 indexy, deklarovaný jenom jeden. Pokud by k byl int z množiny {0,...,cislo-1}, a se přiřadí nějaká hodnota, ale nebude se měnit, tedy pokus o nekonečný cyklus. k se ale inkrementuje, takže to zase spadne na přístupu mimo indexy pole, jestli ne už někde dřív.
Offline
na zaciatku som si dal atribut int i = 0 pre ten cyklus while chcel som to spravit tak aby som kazdemu polu nemusel pridelovat hodnotu tak prvy krat da Pole[0] = 1 podla toho cyklu az kym i nebude i == cislu, teraz pozeram ze som tam nedal i++ aby sa cyklus zastavil a ten for pre int k = 0; a int a = 0; ale ten cyklus vyberie neparne cisla ale to nieje podla Eratoshenovoho sita a to by som potreboval nahradit nejakym cyklom a podmienkami ktore by vybrali prvocisla, a este ak dam cislo narp 20 tak mi vyberie vsetky neparne cisla do Sito[j] ale napise mi ich
1 1 3 3 5 5 7 7 9 9 11 11 13 13 15 15 17 17 19 19
Offline

Offline