@Anvario0

Почему программа на C не обрабатывает числа больше 1999999996?

Я написал программу, которая увеличивает степень 10, пока условие не прервёт цикл.
мой код:
int n = 0;
	while (1) {
		long long int i = 2 * pow(10, n) - 4;
		if (i % 19 == 0)
		{
			printf("%d", n);
			break;
		}
		printf("\t %d\n", i);
		n++;
	}

Но вот что выдаёт консоль:
-2
16
196
1996
19996
199996
1999996
19999996
199999996
1999999996
-1474836484
-1863462916
-1454759940
-1662697476
552894460
1233977340
-545128452
-1156317184
1321730048
0
0
и ниже одни нули. В чём проблема? Почему программа не обрабатывает числа больше 1999999996?
  • Вопрос задан
  • 111 просмотров
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Потому что в формуле у вас все значения типа int, соответственно и вычисления идут в int, а не long.
long long n10 = 10;
while (1) {
    if ((n10 * 2 - 4) % 19 == 0) {
      printf("%ld", (n10 * 2 - 4) / 19 * 10 + 2);
      break;
    }
    n10 *= 10;
}
Ответ написан
Комментировать
GavriKos
@GavriKos
В принтфе скорее всего. %d столько не переваривает
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы