nie rozumiem programu znajdującego dzielniki liczb całkowitych dodatnich:
//program znajduje dzielniki danej liczby; "liczba"-podaje ją użytkownik;
//"dzielnik" - dzielnik liczby podawanej przez użytkownika;
//"pierwsza"-liczba pierwsza-dzieli sie przez 1 i samą siebie
#include<stdio.h>
#include<conio.h>
#define NIE 0
#define TAK 1
int main ()
{
int liczba, dzielnik, pierwsza;
printf ("Podaj dodatnia liczbe calkowita, ktorej dzielniki maja zostac znalezione.\n");
printf ("Wpisz q aby zakonczyc program.\n");
while (scanf("%d", &liczba)==1)
{
for(dzielnik=2, pierwsza=TAK; (dzielnik*dzielnik)<=liczba; dzielnik++)
{
if(liczba%dzielnik==0)
{
if((dzielnik*dzielnik)!=liczba)
printf("%d dzieli sie przez %d i %d.\n",
liczba, dzielnik, liczba/dzielnik);
else
printf("%d dzieli sie przez %d.\n", liczba, dzielnik);
pierwsza=NIE;
}
}
printf("dzieli sie przez 1 i %d.\n", liczba);
if (pierwsza==TAK)
printf("%d jest liczba pierwsza.\n", liczba);
printf("Podaj nastepna liczbe dodatnia calkowita, ktorej dzielniki maja zostac znalezione.\n");
printf("Wpisz q aby zakonczyc program.\n");
}
return 0;
getch ();
}
1. mam ten program i nie rozumiem - while (scanf("%d", &liczba)==1) to znaczy że program działa tak długo dopuki wczytana wartość od użytkownika równa się 1 - NIE ROZUMIEM !!!!!!!!!!
2. czy może istnieje jakaś prostsza wersja tego programu do zrozumienia - żeby ta petla while była bardziej zrozumiała i tę drugą pętlę for żeby jakoś zastąpić też while - pomóżcie
bo ja dopiero zaczynam programować
3. I gdzie mam wstawić:
if (liczba<0)
{
printf("blad");
getch ();
return 0;
}
if (liczba==0)
{
printf("to nie jest liczba pierwsza-dzieli sie przez kazda liczbe calkowita dodatnia z wyjatkiem 0");
getch ();
return 0;
}
if (liczba==1)
{
printf("to nie jest liczba pierwsza-dzieli sie tylko przez 1");
getch ();
return 0;
}
bo we wszystkich sensownych wg mnie miejscach gdzie nalezy to wstawić to, np. dla "1" pojawia się i owszem komunikat: "to nie jest liczba pierwsza-dzieli sie tylko przez 1" po czym jeszcze: "1 dzieli się przez 1 i 1"
?
//program znajduje dzielniki danej liczby; "liczba"-podaje ją użytkownik;
//"dzielnik" - dzielnik liczby podawanej przez użytkownika;
//"pierwsza"-liczba pierwsza-dzieli sie przez 1 i samą siebie
#include<stdio.h>
#include<conio.h>
#define NIE 0
#define TAK 1
int main ()
{
int liczba, dzielnik, pierwsza;
printf ("Podaj dodatnia liczbe calkowita, ktorej dzielniki maja zostac znalezione.\n");
printf ("Wpisz q aby zakonczyc program.\n");
while (scanf("%d", &liczba)==1)
{
for(dzielnik=2, pierwsza=TAK; (dzielnik*dzielnik)<=liczba; dzielnik++)
{
if(liczba%dzielnik==0)
{
if((dzielnik*dzielnik)!=liczba)
printf("%d dzieli sie przez %d i %d.\n",
liczba, dzielnik, liczba/dzielnik);
else
printf("%d dzieli sie przez %d.\n", liczba, dzielnik);
pierwsza=NIE;
}
}
printf("dzieli sie przez 1 i %d.\n", liczba);
if (pierwsza==TAK)
printf("%d jest liczba pierwsza.\n", liczba);
printf("Podaj nastepna liczbe dodatnia calkowita, ktorej dzielniki maja zostac znalezione.\n");
printf("Wpisz q aby zakonczyc program.\n");
}
return 0;
getch ();
}
1. mam ten program i nie rozumiem - while (scanf("%d", &liczba)==1) to znaczy że program działa tak długo dopuki wczytana wartość od użytkownika równa się 1 - NIE ROZUMIEM !!!!!!!!!!
2. czy może istnieje jakaś prostsza wersja tego programu do zrozumienia - żeby ta petla while była bardziej zrozumiała i tę drugą pętlę for żeby jakoś zastąpić też while - pomóżcie
3. I gdzie mam wstawić:
if (liczba<0)
{
printf("blad");
getch ();
return 0;
}
if (liczba==0)
{
printf("to nie jest liczba pierwsza-dzieli sie przez kazda liczbe calkowita dodatnia z wyjatkiem 0");
getch ();
return 0;
}
if (liczba==1)
{
printf("to nie jest liczba pierwsza-dzieli sie tylko przez 1");
getch ();
return 0;
}
bo we wszystkich sensownych wg mnie miejscach gdzie nalezy to wstawić to, np. dla "1" pojawia się i owszem komunikat: "to nie jest liczba pierwsza-dzieli sie tylko przez 1" po czym jeszcze: "1 dzieli się przez 1 i 1"