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

Odpowiedz Nowy wątek
2015-01-09 17:10
SzukającaPomocy
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 :)

Pozostało 580 znaków

2015-01-09 18:07
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ą."


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2015-01-09 19:03
SzukającaPomocy
0

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

Pozostało 580 znaków

2015-01-10 13:05
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


Programuje i programuje ,przychodzi człowiek "o niższej inteligencji" i rok pracy zmarnowany

Pozostało 580 znaków

2015-01-10 13:21
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ł

ale wiesz, że jak masz <= to podzieli przez podaną liczbę i będzie szybciej działał ale nadal źle... musi być < - Niikelion 2015-01-10 13:27
warunek to: ii<= liczba. To to samo co i <= sqrt(liczba). Jak masz i = 2, a liczba = 4 to 22 <= 4 czyli do fora wejdzie, i do ifa też bo 4 nie jest liczbą pierwszą - stryku 2015-01-10 13:34

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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