Hogyan tudom C nyelven egy "bekért" szám osztóit?










"C programozást kezdtem el tanulni"
Innen nézve nem úgy tűnik.





Megesett rajtad a szivem:
program nem_oszto_kereso;
const TAB = #09;
var i,j: integer;
begin
j:= strtoint(Inputs.text);
for i := 1 to j do
if (j mod i) <> 0 then writeln(inttostr(i)+TAB+' NEM osztó!')
end;
end.
És itt a kimenet, ha j = 111:
2 NEM osztó!
4 NEM osztó!
5 NEM osztó!
6 NEM osztó!
7 NEM osztó!
8 NEM osztó!
9 NEM osztó!
10 NEM osztó!
11 NEM osztó!
12 NEM osztó!
13 NEM osztó!
14 NEM osztó!
15 NEM osztó!
16 NEM osztó!
17 NEM osztó!
18 NEM osztó!
19 NEM osztó!
20 NEM osztó!
21 NEM osztó!
22 NEM osztó!
23 NEM osztó!
24 NEM osztó!
25 NEM osztó!
26 NEM osztó!
27 NEM osztó!
28 NEM osztó!
29 NEM osztó!
30 NEM osztó!
31 NEM osztó!
32 NEM osztó!
33 NEM osztó!
34 NEM osztó!
35 NEM osztó!
36 NEM osztó!
38 NEM osztó!
39 NEM osztó!
40 NEM osztó!
41 NEM osztó!
42 NEM osztó!
43 NEM osztó!
44 NEM osztó!
45 NEM osztó!
46 NEM osztó!
47 NEM osztó!
48 NEM osztó!
49 NEM osztó!
50 NEM osztó!
51 NEM osztó!
52 NEM osztó!
53 NEM osztó!
54 NEM osztó!
55 NEM osztó!
56 NEM osztó!
57 NEM osztó!
58 NEM osztó!
59 NEM osztó!
60 NEM osztó!
61 NEM osztó!
62 NEM osztó!
63 NEM osztó!
64 NEM osztó!
65 NEM osztó!
66 NEM osztó!
67 NEM osztó!
68 NEM osztó!
69 NEM osztó!
70 NEM osztó!
71 NEM osztó!
72 NEM osztó!
73 NEM osztó!
74 NEM osztó!
75 NEM osztó!
76 NEM osztó!
77 NEM osztó!
78 NEM osztó!
79 NEM osztó!
80 NEM osztó!
81 NEM osztó!
82 NEM osztó!
83 NEM osztó!
84 NEM osztó!
85 NEM osztó!
86 NEM osztó!
87 NEM osztó!
88 NEM osztó!
89 NEM osztó!
90 NEM osztó!
91 NEM osztó!
92 NEM osztó!
93 NEM osztó!
94 NEM osztó!
95 NEM osztó!
96 NEM osztó!
97 NEM osztó!
98 NEM osztó!
99 NEM osztó!
100 NEM osztó!
101 NEM osztó!
102 NEM osztó!
103 NEM osztó!
104 NEM osztó!
105 NEM osztó!
106 NEM osztó!
107 NEM osztó!
108 NEM osztó!
109 NEM osztó!
110 NEM osztó!










Beírsz egy számot (pl 72).
Legelső amit jó ha megtanulsz: nem kell elmenj 72-ig, 37-től 71-ig nincs olyan szám amivel tudod osztani.
Szóval elég a feléig.
For ciklus, 1-től szam feléig, if szam osztva az i-vel = 0, kiiratod az i-t. Miután végigment a for ciklus, kiiratod a szamot is osztóként.





A feléig sem kell elmenni, elég a négyzetgyökéig. Alapvető programozói tudás, hogy lehetőleg ne írj négyzetes futásidejű kódot, ha nem muszáj.
void osztok(int n) {
int i;
for(i=1;i*i<=n;i++) if(n % i == 0) printf("%d\n",i);
printf("%d\n",n);
}
Köszönöm a válaszokat. Aki meg csak odafent a megjegyzéseivel tud sértegetni, annak hajnali egykor nincs jobb dolga? Tényleg teljesen a 0-ról indulok, sőt, -2-ről és bocs, hogy szeretnék mindent 100%-osan megérteni.
Én ezt írtam,saját logikából,de nem jó.Mi a hiba?
Biztos, hogy rosszul értelmezem valamelyik parancsot. Kérlek segítsetek megérteni.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a, o=1;
printf("Adj meg egy szamot, en pedig kiirom neked, hogy milyen szamokkal oszthato: ");
scanf("%d",&a);
while(a>=o) {
if(a%o==0) {
printf("%d",o);
o=o+1;
}
}
return 0;
}










Az igaz, hogy elég elmenni a gyökéig, de amit a #6-os írt az (félig) baromság.
Ez mi?
printf("%d\n",n);
Minek kirni a számot külön?
És egyébként a kisebb osztók párjait nem fogja kiírni a programja.
Tehát pl n=120 esetén 10-ig kiírja az osztókat és kiírja a 120-at. A többit nem.
Helyesen ugy lenne, hogy amikor kiírja az i-t, akkor kiírja az n/i-t is, persze ekkor nem sorrendben kapod meg az osztokat, de remélem ez nem baj.





Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!