У меня есть простая программа, которая находит автоморфные числа до заданного числа. Проблема в том, что он просто находит число, квадратный параметр которого связан с int.Расчет длинного типа данных в C
например: 90625 x 90625 = 8212890625, но программа не может его найти.
Вопрос: В чем проблема с длинным типом здесь? Он действует как int. Есть ли приведение к int для квадратного параметра в любом месте кода?
#include <stdio.h>
int main(void)
{
int n;
long i;
printf ("Enter a value:\n") ;
scanf ("%d",&n) ;
printf ("Automorphic numbers:\n") ;
for (i=1L ; i<=n ; i = i+1L)
{
long square = i*i ;
if (square % 10L == i || square % 100L == i || square % 1000L == i || square % 10000L == i || square % 100000L == i || square % 1000000L == i || square % 10000000L == i)
printf ("%li\n", i) ;
}
}
Вы уверены, что 'long' - это количество бит, которое вы думаете? (по крайней мере, на вашем компьютере) –
@ DennisMeng на самом деле я проверил размер длинных 4 байта:/Я думал, что это 8 байт. Итак, почему существует длинный тип в C с его 4-х байтов так же, как int? –
http://stackoverflow.com/questions/18971732/difference-between-long-long-long-long-int-and-long-long-int-in-c Проверьте это для большего различия между типами int и в вашем сценарии использование long long int обязательно должно помочь! – nagraz007