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

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("\n");
while (i>2)// если в первый цикл входа не было, то и во второй цикл входа не будет!
{
i--;
if (n % i == 0 )
{
printf("%d ", i);
}
}
printf("1");// число 1 выводится всегда
return 0;
}

Батырхан Кумбасов
Данияр, я не могу знать, какими темами Вы ограничены, поэтому просто чуток поправил Ваш код. Пожалуйста, перепроверьте его.
P.S. Комментарии в коде не навредят.
P.S. Комментарии в коде не навредят.
Антон Вагин
Спасибо, что объяснили, но я уже сам вчера решил задачу. Так или иначе спасибо
Похожие вопросы
- На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
- Задача по Массивах С++ Дано натуральное число N...
- С++. БЕЗ ИСПОЛЬЗОВАНИЯ АДРЕСОВ И УКАЗАТЕЛЕЙ. Пусть дано натуральное число n и вещественная матрица размером n x 10.
- Заданы натуральное число n и действительные числа a1, a2, …, an. Вычислить
- C++ Дано натуральное число N. Вычислить
- Найдите все на уральные числа N принадлежащему отрезку.
- C++ Выведите в порядке возрастания все простые числа на отрезке [l;r]. Оформите решение в виде функции bool
- Написать кусочек С++Выведите в порядке возрастания все простые числа на отрезке [l;r]. Оформите решение в виде функции
- С++ | Надо отсортировать двухмерный массив N*M в порядке возрастания и спадания ПО КАЖДОМУ СТОЛБЦУ ОТДЕЛЬНО
- Си. Цикл for. Что не так? Составить программу вывода на экран всех простых чисел не превосходящих введеннного числа N
printf(i == 1 ? "%d" : " %d", i);