C jezik - problem sa petljama

8

C jezik - problem sa petljama

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14811
  • Gde živiš: Niš

Okej. I koji je uslov da broj bude prost?



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Miloš
  • Pridružio: 23 Maj 2011
  • Poruke: 1069

vasa.93 ::Okej. I koji je uslov da broj bude prost?

Ne znam, bune me te dvije petlje u slučaju kada korisnik zadaje broj, zar i tad mora da program ide od 1 do N pa da koristim petlju?



offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14811
  • Gde živiš: Niš

Miloš CG ::Ne znam, bune me...Ja zato rekoh ovo: vasa.93 ::Hajmo sada da promenimo pristup. Zaboravi ovaj zadatak koji imaš, i usredsredi se na pisanje zadatka (još jednom, može i kao zasebna funkcija) koji proverava da li je broj K prost broj. To je srž zadatka koji treba da uradiš. Kada to uradiš, zadatak koji imaš rešava se vrlo jednostavno (rešenje prektično već imaš). Imaš i uputstvo kako da proveriš da li je broj prost...Ali nema ko da sluša.

Miloše, ništa lično, ali mislim da se ne trudiš dovoljno. Previše vremena mi oduzima ovo ponavljanje objašnjenja iznova i iznova. I tebi i meni. Ponoviću objašnjenje još jednom: vasa.93 ::Broj K je prost ako nije deljiv ni sa jednim brojem manjim od njega samog, tj. od 2 do K-1, odnosno ako je deljiv samo sa 1 i sa samim sobom. ... Optimalnije rešenje je da pustiš petlju od 2 do K-1, i čim naiđeš na broj sa kojim je K deljiv zaključiš da K nije prost broj. Ako ne nađieš na takav broj, broj N je prost.Čime se isključujem iz ove teme sve dok ne bude konkretnih rezultata. Nemoj da se ljutiš, ali previše truda ulažem, a rezultat izostaje.

Sada je sve na tebi.

offline
  • Miloš
  • Pridružio: 23 Maj 2011
  • Poruke: 1069

Evo ga, malo sa pogledao primjere na netu i sklopio ovo:

#include<stdio.h> main() {     int K,i,brojac=0;     printf("Unesi broj: ");     scanf("%d",&K);     for(i=2;i<=K/2;i++) {         if(K%i==0){          brojac++;         }     }    if(brojac==0 && K!= 1)         printf("%d je prost broj.",K);    else       printf("%d nije prost broj.",K);    getch(); }

Sad mi je lako da promjenim da program traži ove brojeve od 2 do N Smile

Imam još jedan zadatak da nađem brojeve koji odgovaraju pitagorinoj teoremi, tj. broj koji je jednak: a na kvadrat + b na kvadrat = c na kvadrat. Sad ću da probam da ga uradim pa da vidim kako će da mi ide Very Happy

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14811
  • Gde živiš: Niš

Vidiš da možeš i sam da rešiš kada se potrudiš. Wink

Okej, to je to. Ovo rešenje radi. Ima i optimalnijih rešenja, ali to ti za sada nije bitno, pa nećemo o tome.

Što se tiče novog zadatka, objašnjenje ti i nije baš najjasnije, ali ok, razumem poentu. Smile

offline
  • Miloš
  • Pridružio: 23 Maj 2011
  • Poruke: 1069

vasa.93 ::Ima i optimalnijih rešenja, ali to ti za sada nije bitno

Jel' misliš na kraći kod ili na bolju logiku zadatka?

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14811
  • Gde živiš: Niš

A šta ti misliš? Da li je sa stanovišta računara optimalnije ono rešenje koje ima kraći kod, ili ono rešenje koje se kraće/brže izvršava? Very Happy

offline
  • Miloš
  • Pridružio: 23 Maj 2011
  • Poruke: 1069

vasa.93 ::A šta ti misliš? Da li je sa stanovišta računara optimalnije ono rešenje koje ima kraći kod, ili ono rešenje koje se kraće/brže izvršava? Very Happy

Pa dok nisi spomenuo ovo drugo nisam uopšte mislio o tome Very Happy Nema veze, ako budeš imao vremena prepravi kod, ako nemaš nije bitno Razz

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14811
  • Gde živiš: Niš

Napisano: 03 Nov 2014 17:24

Ma šta da prepravljam, imam ja gotov kod odavno. Very Happy
for (i = 2; i <= N; i++) {    j = 2; br = 0;    while (j < sqrt(i) + 1 && br == 0)    {       if (i%j == 0)          br++;       j++;    }    if (br == 0)       printf("%d", i); }

Dopuna: 03 Nov 2014 17:26

I da, ovo ti je za štampanje svih prostih brojeva od 2 do N, tj. baš ono što se traži u zadatku.

offline
  • Miloš
  • Pridružio: 23 Maj 2011
  • Poruke: 1069

vasa.93 ::
   while (j < sqrt(i) + 1 && br == 0)    

I da, ovo ti je za štampanje svih prostih brojeva od 2 do N, tj. baš ono što se traži u zadatku.


Vidim, samo mi reci šta je ovo sqrt(i) i može li da se izbjegne, pošto to nismo učili u školu pa nas nastavnica optužuje da skidamo zadatke sa interneta. Very Happy

Ko je trenutno na forumu
 

Ukupno su 851 korisnika na forumu :: 40 registrovanih, 4 sakrivenih i 807 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., aleksmajstor, bankulen, Belac91, Bojan85, bokisha253, ccoogg123, comi_pfc, doktor1964, draganca, FOX, HrcAk47, JOntra, Kubovac, ladro, Mercury, Metanoja, mikrimaus, Milenaaa, Milometer, milutin134, MiroslavD, Mixelotti, mnn2, nemkea71, nuke92, pein, S2M, Shinobi, Simon simonović, slonic_tonic, solic, ss10, stankolich, Stanlio, Steeeefan, wizzardone, zillbg, |_MeD_|, šumar bk2