История изменений
Исправление saahriktu, (текущая версия) :
Для выделения подстрок? Нет там необходимости считать. И даже для последовательного вывода строк нет необходимости считать. Можно обходиться и без объединения строк. Пример:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char **argv){
long long x, d = 2;
char llbuf[64];
if(argc < 2){
printf("usage: fmdl number\n");
return 1;
}
x = atoll(argv[1]);
fputs(argv[1], stdout);
fputs(" = ", stdout);
while (d <= x){
if(x%d == 0){
sprintf(llbuf, "%ld", d);
fputs(llbuf, stdout);
if(x != d) fputs(" * ", stdout);
x /= d;
d = 2;
continue;
}
d++;
}
putchar(';');
putchar('\n');
return 0;
}
52952148 = 2 * 2 * 3 * 3 * 61 * 24113;
Исправление saahriktu, :
Для выделения подстрок? Нет там необходимости считать. И даже для последовательного вывода строк нет необходимости считать. Можно обходиться и без объединения строк. Пример:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char **argv){
long long x, d = 2;
char llbuf[64];
if(argc < 2){
printf("usage: fmdl number\n");
return 1;
}
x = atoll(argv[1]);
fputs(argv[1], stdout);
fputs(" = ", stdout);
while (d <= x){
if(x%d == 0){
sprintf(llbuf, "%ld", d);
fputs(llbuf, stdout);
if(x != d) fputs(" * ", stdout);
x /= d;
d = 2;
continue;
}
d++;
}
putchar(';');
putchar('\n');
return 0;
}
52952148 = 2 * 2 * 3 * 3 * 61 * 24113;
Исходная версия saahriktu, :
Для выделения подстрок? Нет там необходимости считать. И даже для последовательного вывода строк нет необходимости считать. Можно обходиться и без объединения строк. И вообще без дополнительных буферов обходиться можно. Пример:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char **argv){
long long x, d = 2;
char llbuf[64];
if(argc < 2){
printf("usage: fmdl number\n");
return 1;
}
x = atoll(argv[1]);
fputs(argv[1], stdout);
fputs(" = ", stdout);
while (d <= x){
if(x%d == 0){
sprintf(llbuf, "%ld", d);
fputs(llbuf, stdout);
if(x != d) fputs(" * ", stdout);
x /= d;
d = 2;
continue;
}
d++;
}
putchar(';');
putchar('\n');
return 0;
}
52952148 = 2 * 2 * 3 * 3 * 61 * 24113;