Mam zadanie na informatykę(napisać program w pascalu) , a niestety nie umiem sobie z nim poradzić;/ Napisz program znajdujący najmniejszy podzielnik danej liczby całkowitej, poza liczbą 1. Błagam o pomoc!
Pascal
ja bym zrobił to tak: najpierw wczytujesz liczbe z klawiatury, a potem w pętli od dwójki do tej liczby sprawdzasz czy kazda kolejna liczba jest dzielnikiem tej podanej z klawiatury.
liczba jest dzielnikem, jesli reszta z dzielenia daje 0.
mniej wiecej cos takiego (przepraszam za ewentualne błędy, dawno nie pisalem nic w pascalu)
for i:=2 to n do
begin
if a mod i=0
begin
writeln("dzielnik to ",i);
i:=n;
end
else i:=i+1;
end;
oczywiscie to nie jest caly kod, tylko sama pętla sprawdzajaca i to nie wiem czy dobrze dzialajaca:D pisze na wszelki wypadek, gdybys probowala to kompilowac i przy okazji na mnie bluzgac;D
Algorytm
1. Wczytujesz liczbe - naprzyklad a.
2. Jesli a jest mniejsza od 0, a rowna sie a*(-1).
3. Jesli a jest rowna 0 - komunikat brak dzielnikow.
4. Jesli a jest rowna 1 - komunikat dzielnik to 1.
5. Jesli a jest wieksza badz rowne 2 to:
6. Od 2 do a+1 wykonuj (for b:=2 to a+1 do)
7. Jesli a mod b = 0 wyswietl ('dzielnik = ',b) readln i halt (wylacza program)
8. Jesli nie b:=b+1; (jak robilem to teraz to bez tego dzialalo dobrze a z tym zle - nie wiem dlaczego wrazie czego usun ta linijke bo mi dodawalo +2.
I tyle potem wyswietl wynik, masz tu na liczby ujemne, dodatnie, 0 i 1 wiec wszystkie calkowite a nie tylko dodatnie :D
jak co to pisz :)
dzięki;P Ale jeśli ktoś mógłby mi jednak napisać ten program, a ja go sobie obczaje, co? Bo sama nie dam rady;/
dodawało dwójkę ponieważ "b" jest podwójnie inkrementowane przez pętle for i przez ciebie
dla przyspieszenia działania powinno się osobno na początku sprawdzić czy liczba jest podzielna przez dwa a potem w pętli lecieć tylko po liczbach nieparzystych. dwukrotne mniej obliczeń.