Нет, не через логические операции, не через \n в новой строке не получается написать этот код без пробела в конце. Мой сайт шараги не принимает такой ответ. (нет, некоторые сдали и сказали что можно в конце без пробела написать.) Просто помогите. Напишите ответ. Я не могу отвечать на комментарии закончился лимит
do {
if (n % b == 0 || n==0)
{
printf("%d", b);
}
b++;
} while (b <= n);
printf("\n");
do{
if (n % i == 0|| n==0)
{
printf("%d", i);
}
i--;
} while (i>0);
printf("\n");
}
Если число n небольшое (скажем, до миллиарда !), то можно так: #include "stdio.h" int main() { int i,m,n; for (; { printf ("n = ?"); scanf("%d",&n); m=n/2; if (n==1) { printf("1
1
"); continue; } else { printf("1,"); for (i=2; i<=m; i++) if (n%i==0) printf("%d,",i); printf("%d
",n); printf("%d,"n); for (i==m; i>1; i--) if (n%i==0) printf("%d,",i); printf("1
"); } } return 0; } Однако если n очень большое (например, двадцатизначное !) такой метод явно не годится и надо использовать совершенно иной подход, хотя он и более громоздкий !.. (P.S. И причём тут вообще пробел в конце ?)
#include <stdio.h> int main() { int n, i=2; scanf_s("%d", &n); printf("1");// число 1 выводится всегда while (i <= n) { if (n % i == 0) { printf(" %d", i); } i++;// при выходе из цикла i == n + 1 }// однако, если входа в цикл не было, то i == 2 printf("
"); while (i>2)// если в первый цикл входа не было, то и во второй цикл входа не будет! { i--; if (n % i == 0 ) { printf("%d ", i); } } printf("1");// число 1 выводится всегда return 0; }
ну так у тебя числа подряд выводиться будут: 1235610, поставь пробел между ними. ну или вот: for (int i = 1; i <= n; ++i) if (n % i == 0) printf("%d ", i); for (int i = n; i > 0; --i) if (n % i == 0) printf("%d ", i); -- обычно проверочные системы игнорируют "лишний" пробел в конце вывода, так что думаю дело не в нем