Factors of an integer: Difference between revisions
Undo revision 101016 by 81.255.154.129 (previous version worked fine; no need to make it more complex)
(Undo revision 101016 by 81.255.154.129 (previous version worked fine; no need to make it more complex)) |
|||
Line 272:
=={{header|C}}==
<lang c>#include <
#include <
typedef struct {
▲ int *list;
▲ short count;
} Factors;
void xferFactors( Factors *fctrs, int *flist, int flix )
{
if (newSize > flix) {
fctrs->list = (newSize > flix) ? realloc(fctrs->list, newSize * sizeof(int)) : malloc(newSize * sizeof(int));▼
}▼
fctrs->list[ix] = flist[ij];▼
else {
fctrs->count = newSize;▼
▲
}
for (ij=0,ix=fctrs->count; ix<newSize; ij++,ix++) {
▲ fctrs->list[ix] = flist[ij];
}
}
Factors *factor( int num, Factors *fctrs)
{
for (dvsr=1; dvsr*dvsr < num; dvsr++) {
xferFactors( fctrs, flist, flix );▼
if (num % dvsr != 0)▼
flix = 0;
flist[flix++] = dvsr;▼
flist[flix++] = num/dvsr;
▲ xferFactors(fctrs, flist, flix);
▲ }
flist[flix++] = dvsr;
xferFactors( fctrs, flist, flix );▼
▲ flist[flix++] = dvsr;
▲ if (flix > 0)
▲ xferFactors(fctrs, flist, flix);
▲ return fctrs;
}
int main(int argc, char
{
factor( nums2factor[i], &ftors );
sep = ' ';▼
for (j=0; j<ftors.count; j++) {
▲ sep = ' ';
sep = ',';
}
}
return 0;
}</lang>
|