Program wyświetlający czy dana liczba jest liczbą pierwszą. Język C.

0

Napisałam program w języku C, sprawdzający czy podana liczba jest pierwsza. Program oblicza prawidłowo, ale napis "Podana liczba nie jest liczba pierwszą" wyswietla mi się kilka razy. Jak to zmienić?

#include<stdio.h>

int main()
{
int liczba, i;
printf("Podaj liczbe:\n");
scanf("%d", &liczba);

if (liczba==2)
printf("Podana liczba jest liczba pierwsza.\n");

else if(liczba<2)
printf("Podana liczba nie jest liczba pierwszą");

else
for(i=2;i<=liczba;i++)
{
if(liczba%i==0)
printf("Podana liczba nie jest liczbą pierwszą.\n");

}

return 0;

}

Bardzo proszę o pomoc :)

0

A czego oczekiwałaś?
W pętli jak tylko znajdzie dzielnik wypisuje ci tą informacje.
Ba program nie działa, bo dla liczb pierwszych np 13 również wypisuje: - "Podana liczba nie jest liczbą pierwszą."

0

Gdybym nie miała problemu, raczej nie zadawałabym pytania. Dziękuję za pomoc (lub raczej jej brak), problem rozwiązany, pozdrawiam. :)

0

znalazłem błąd... masz <=liczba czyli jak podasz 13 to podzieli przez 13 a 13%13=0... daj se zmienną logiczną na true i jak znajdziesz dzielnik(nie znam się na nazewnictwie) to ustawiasz na false i jak pod koniec programu masz false to napisz że ta liczba nie jest liczbą pierwszą.... naucz się myśleć logicznie bo widać, że trochę ci zabrakło tego pod koniec programu :P

0
Niikelion napisał(a):

daj se zmienną logiczną na true i jak znajdziesz dzielnik(nie znam się na nazewnictwie) to ustawiasz na false i jak pod koniec programu masz false to napisz że ta liczba nie jest liczbą pierwszą....

jak na moje to już lepiej jak w forze spełni się

   if(liczba%i==0)
    printf("Podana liczba nie jest liczbą pierwszą.\n");

to tam wypisać i zrobić break niż całego fora do końca lecieć.

A tak wgl to w for zrób takie

  for(i=2;i<= sqrt(liczba);i++)

albo

  for(i=2;i*i<= liczba;i++)

program szybciej będzie działał

1 użytkowników online, w tym zalogowanych: 0, gości: 1