回复 4楼 因为曾今年少
我做了这个强制转换 但是输出的结果却丢失了两个数 只有这些数被输出啦 是什么原因呢 还有就是做了 强制转换的话 又出现了 新的情况
error C2632: 'long' followed by 'long' is illegal
#include<stdio.h>
#include<math.h>
int main()
{
long long a;//这里
int i, k, m;
for(i = 1; i < 200000; i++)
{
a = i;
a *= a;
k = (int)log10(i)+1;
for(m = 1; k; k--) m *= 10;
a %=m;
if(a == i) printf("%d\n", i);
}
return 0;
}
请问是什么问题导致的
修改为这样的话
#include<stdio.h>
#include<math.h>
int main()
{
long a;//这里
int i, k, m;
for(i = 1; i < 200000; i++)
{
a = i;
a *= a;
k = (int)log10(i)+1;
for(m = 1; k; k--) m *= 10;
a %=m;
if(a == i) printf("%d\n", i);
}
return 0;
}
输出:
1
5
6
25
76
376
625
9376
是不是精度导致的 还是那里有问题