Вопрос Язык си Найти все делители натурального числа N и вывести их в порядке возрастания и убывания.

Регистрация
11 Июн 2013
Сообщения
80
Репутация
0
Спасибо
0
Монет
0
Нет, не через логические операции, не через \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; }
255333322_c5e36cb815636083dbecf4ca81aa5607_800.png
 
for (b = 1; b <= n; ++b) { if (n % b == 0) { if (b !== 1) { printf(" "); } printf("%d", b); } } printf("
"); for (b = n; b >= 1; --b) { if (n % b == 0) { if (b !== n) { printf(" "); } printf("%d", b); } } printf("
");
 
#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("
%d", i) : printf(" %d", i);  }
 
ну так у тебя числа подряд выводиться будут: 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); -- обычно проверочные системы игнорируют "лишний" пробел в конце вывода, так что думаю дело не в нем
 
Назад
Сверху