prosim, nemohl by mi někdo pomoci s úkolem, a nemohli byste mi popsat kroky, díky moc:
Na vstupu jsou dvě přirozená čísla a, b. Vytiskněte, kolik prvočísel se nachází v intervalu <a, b>.
pozn.: nejprve ošetři podmínku, kdy je přirozené číslo prvočíslem, potom jen ty, která jsou prvočísly, "vpusť" do cyklu for-to-do a sečti jejich počet. Na obrazovce se objeví: interval, informace o jednotlivých číslech postupně - zda jsou nebo nejsou prvočísla, nakonec počet prvočísel v intervalu je:..
Fórum › Pascal
Prvocisla v intervalu
To survik1 : otazkou je jestli vlastne vi co je to prvocislo...
To autor:
napoveda: je to cislo vetsi nez 1 delitelne pouze 1 a samo sebou ... pokud tedy zjistujes zda je cislo prvocislo pak musis zkontrolovat jestli nema nejake dalsi delitele krom 1 a cisla samotneho...
pokud nedas dohromady ani toto nema smysl ztracet cas na necem dalsim
Na zjištění, zda-li jsou v daném rozmezí obsažena prvočísla, existuje i standartní algoritmus - Eratosthenovo síto: http://cs.wikipedia.org/wiki/Eratosthenovo_síto. Ten by se ti mohl hodit.
Ahojte,
mam v skole vytvoriť program (pomocou Dev-C++), ktorý zisti či je dane číslo prvočíslom. Samotne Erostonovo sito už spravené mam, t.j. dokázal by som vypísať na obrazovku prvočísla od 2 až napríklad po milión, takže s týmto problém nemám. Ale mojou úlohou nieje ich vypísanie, ale to aby po zadaní ľubovoľného čísla vypísal program či dané číslo je alebo nie je prvočíslom. A momentálne si s tým vôbec neviem rady. Neviem ako mám zadefinovať podmienku pre overenie či sa to číslo medzi nimi nachádza alebo nie. Viem,že to asi nebude moc ťažké nebude, ale čím dlhšie nad tým sedím tým viac sa mi to komplikuje a preto Vás chcem poprosiť o menšiu radu, ako sa pohnúť ďalej. Pre ukážku môj zdrojový kód.
#include<stdio.H>
#include<stdlib.H>
#include<math.H>
main()
{
int MAT[99999];
int i,j;
for(i=0;i<99999;i++){
MAT[i]=i+2;
}
for(i=0;i<99999;i++){
j=i+1;
if(MAT[i]!=0){
while(j<99999)
{
if(MAT[j]%MAT[i]==0)
{
MAT[j]=0;
}
j++;
}
}
}
/*
Ak by som ich chcel vypísať prvočísla na obrazovku,tak by som následne takto pokračoval.
Ale tu asi niekde by mala nasledovať ta podmienka overenia, len neviem ako ju zadefinovať.
for(i=0;i<99999;i++){
if(MAT[i]!=0){
printf("%d ",MAT[i]);
}
}
*/
system("pause");
return 0;
}
Sice koukám, že téma už je docela staré, nicméně řešení tu neni, tak se pokusim aspoň trochu pomoct...
Eratosthenovo síto mu asi zas tolik nepomůže, protože by to chtě nechtě musel procházet od 2-ky, což asi není ideální, je pravda že výsledek síta by se dal zapsat buď do pole popř. do lineárního seznamu, pak by stačilo jen udělat vyhledávání v tom poli/seznamu, čehož jsou na netu mraky.
Druhá možnost, která si myslim, že stojí možná za zmínku je for cyklus, kterej bude procházet od 2 do sqrt(testovane_cislo) a jakmile najde nejakeho delitele (cislo mod testovane_cislo = 0) tak break za ten break dat nejakej increment a jit na dalsi cislo.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Python- půlení intervalů — založil Simon5
Pomoc-puleni intervalu — založil huck
Prumer lichych cisel v intervalu — založil Adam
Horni, dolni mez intervalu — založil vitamin
Refresh RichTextBoxu v časovém intervalu — založil Brouk Pytlík
Moderátoři diskuze