Diskuze: Nalezení prvočísel v poli
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 2 zpráv z 2.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
tu je upravena funkcia a taktiež celý program
#include <stdio.h>
#define PCIS 5 // tu je definovany pocet cisel
void hledani_prvocisla (int pole[], int pocet_prvku);
int p[PCIS]; // tu je miesto pre pole cisel
void main(void)
{// tu si definuejeme cisla, ktore chceme preverit
p[0]=13;
p[1]=21;
p[2]=47;
p[3]=7;
p[4]=9;
// tu zavolame funkciu,ktora preveri cisla v cykle
hledani_prvocisla (p,PCIS);
return;
}
void hledani_prvocisla (int pole[], int pocet_prvku)
{
int cislo = 0, i,j,indik;
// cisla su posielane parametrami funkcie
//printf("Oveeni prvocisla\n"
//"==============\n\n"
//"Zadejte zkoumane kladne cele cislo: ");
//scanf ("%d", &cislo);
//printf ("Zadali ste: %d\n", cislo);
for(j=0;j < pocet_prvku;j++)
{cislo=pole[j];
if(cislo<2)
{printf("\nZadané cislo %d neni prvocislem.\n",cislo);
continue;
}
// optimalizace - suda cisdla kromì 2 nás nezajimaji
if(cislo%2 == 0 && cislo!=2)
{printf("\nZanene cislo %d neni prvocislem.\n",cislo);
continue;
}
// pak staci zkoumat jen liché dìlitele
indik=0;
for(i=3;i<cislo;i+=2) //Dalo by se ještì vylepšit použitím odmocniny
... i<=sqrt(cislo)0
if(cislo%i == 0)
{printf("\nZanene cislo %d není prvocislem.\n",cislo);
indik=1;
break;
}
if(indik == 0)
printf("\nZadane cislo %d je prvocislem.\n",cislo);
}
}
Zobrazeno 2 zpráv z 2.