1。发现问题
在“一个数的三次方尾数是888,有什么规律吗?”一文中,笔者贴出了程序及结果,找到的规律如下:
规律:
等差数列,首项为192,公差为250。
该方法的数学证明(归纳法):
x的个位是2,且x
3的尾数为888,故可写为
x=10*a+2,a>1,
y=x
3=1000*b+888,b>1,
因此
x
2=(10*a+2)
2=100*a
2+40*a+4
(x+250)
3=x
3+750*x
2+187500*x+62500*250
=(1000*b+888)+750*(100*a
2+40*a+4)+187500*(10*a+2)+15625000
=(1000*b+888)+(75000*a
2+3000*a+3000)+(1875000*a+375000)+15625000
=1000*(b+75*a
2+3*a+3+1875*a+375+15625)+888
=1000*(b+75*a
2+1878*a+16003)+888
=1000*c+888 (其中c=b+75*a
2+1878*a+16003)
显然(x+250)
3的尾数也为888。
故该方法能求得全部满足条件的数。
但是在第1665个数416192后面应该是416442,但漏掉了,从此处开始,以442结尾的数全都漏掉,究其是何原因?
2。分析问题
为了搞清楚将这些数据漏掉的原因,我们将程序简化改写为如下代码,x从416442开始,调试时可以清楚的看到其汇编代码。
#include
<
stdio.h
>
#include < stdlib.h >
#include < math.h >
#include < conio.h >
#define MAXCOUNT 3000
void main()
... {
unsigned int x=416442;//12;
long long y=0l;
int count=0;
FILE *fp=fopen("3次方结尾为888的数.txt","w");
if(fp==NULL)
...{
printf("can not wirte file!");
exit(0);
}
printf("the first 100 numbers is as follows: ");
while(count<MAXCOUNT)
...{
//y=1; y*=x; y*=x; y*=x;
y=pow(x*1.0,3);
if(y%1000==888)
...{
count++;
//显示该数据
printf("%d: x=%ld - x^3=%lld ",count,x,y);
fprintf(fp,"%d: x=%ld - x^3=%lld ",count,x,y);
}
x+=10;
}
fclose(fp);
printf("press any key to continue...");
getch();
}
#include < stdlib.h >
#include < math.h >
#include < conio.h >
#define MAXCOUNT 3000
void main()
... {
unsigned int x=416442;//12;
long long y=0l;
int count=0;
FILE *fp=fopen("3次方结尾为888的数.txt","w");
if(fp==NULL)
...{
printf("can not wirte file!");
exit(0);
}
printf("the first 100 numbers is as follows: ");
while(count<MAXCOUNT)
...{
//y=1; y*=x; y*=x; y*=x;
y=pow(x*1.0,3);
if(y%1000==888)
...{
count++;
//显示该数据
printf("%d: x=%ld - x^3=%lld ",count,x,y);
fprintf(fp,"%d: x=%ld - x^3=%lld ",count,x,y);
}
x+=10;
}
fclose(fp);
printf("press any key to continue...");
getch();
}
其汇编代码如下:
---
c:documents and settingsyuzubo桌面 estcubetail888.cpp
-------------------
1 : #include < stdio.h >
2 : #include < stdlib.h >
3 : #include < math.h >
4 : #include < conio.h >
5 :
6 : #define MAXCOUNT 3000
7 :
8 : void main()
9 : ... {
00434C10 push ebp
00434C11 mov ebp,esp
00434C13 sub esp,10Ch
00434C19 push ebx
00434C1A push esi
00434C1B push edi
00434C1C lea edi,[ebp-10Ch]
00434C22 mov ecx,43h
00434C27 mov eax,0CCCCCCCCh
00434C2C rep stos dword ptr es:[edi]
10: unsigned int x=416442;//12;
00434C2E mov dword ptr [x],65ABAh
11: long long y=0,z=0;
00434C35 mov dword ptr [y],0
00434C3C mov dword ptr [ebp-14h],0
00434C43 mov dword ptr [z],0
00434C4A mov dword ptr [ebp-24h],0
12: int count=0;
00434C51 mov dword ptr [count],0
13:
14: FILE *fp=fopen("3次方结尾为888的数.txt","w");
00434C58 push offset string "w" (497E20h)
00434C5D push offset string "3´Î·½½áβΪ888µÄÊaaaaa"
(497E04h)
00434C62 call @ILT+1755(_fopen) (4326E0h)
00434C67 add esp,8
00434C6A mov dword ptr [fp],eax
15: if(fp==NULL)
00434C6D cmp dword ptr [fp],0
00434C71 jne main+77h (434C87h)
16: ...{
17: printf("can not wirte file!");
00434C73 push offset string "can not wirte file!" (497DECh)
00434C78 call @ILT+5055(_printf) (4333C4h)
00434C7D add esp,4
18: exit(0);
00434C80 push 0
00434C82 call @ILT+5365(_exit) (4334FAh)
19: }
20:
21: printf("the first 100 numbers is as follows: ");
00434C87 push offset string "the first 100 numbers is as foll"... (497DBCh)
00434C8C call @ILT+5055(_printf) (4333C4h)
00434C91 add esp,4
22: while(count<MAXCOUNT)
00434C94 cmp dword ptr [count],0BB8h
00434C9B jge main+161h (434D71h)
23: ...{
24: //y=1; y*=x; y*=x; y*=x;
25: //不能用
26: y=pow(x*1.0,3);
00434CA1 push 3
00434CA3 mov eax,dword ptr [x]
00434CA6 mov dword ptr [ebp-10Ch],eax
00434CAC mov dword ptr [ebp-108h],0
00434CB6 fild qword ptr [ebp-10Ch]
00434CBC fmul qword ptr [__real@3ff0000000000000 (497DB0h)]
00434CC2 sub esp,8
00434CC5 fstp qword ptr [esp]
00434CC8 call pow (4322FDh)
00434CCD add esp,0Ch
00434CD0 call @ILT+5090(__ftol2) (4333E7h)
00434CD5 mov dword ptr [y],eax
00434CD8 mov dword ptr [ebp-14h],edx
27:
28: z=y;
00434CDB mov eax,dword ptr [y]
00434CDE mov dword ptr [z],eax
00434CE1 mov ecx,dword ptr [ebp-14h]
00434CE4 mov dword ptr [ebp-24h],ecx
29: if(z%1000==888)
00434CE7 push 0
00434CE9 push 3E8h
00434CEE mov eax,dword ptr [ebp-24h]
00434CF1 push eax
00434CF2 mov ecx,dword ptr [z]
00434CF5 push ecx
00434CF6 call @ILT+1455(__allrem) (4325B4h)
00434CFB mov dword ptr [ebp-10Ch],eax
00434D01 mov dword ptr [ebp-108h],edx
00434D07 cmp dword ptr [ebp-10Ch],378h
00434D11 jne main+153h (434D63h)
00434D13 cmp dword ptr [ebp-108h],0
00434D1A jne main+153h (434D63h)
30: ...{
31: count++;
00434D1C mov eax,dword ptr [count]
00434D1F add eax,1
00434D22 mov dword ptr [count],eax
32: //显示该数据
33: printf("%d: x=%ld - x^3=%lld ",count,x,y);
00434D25 mov eax,dword ptr [ebp-14h]
00434D28 push eax
00434D29 mov ecx,dword ptr [y]
00434D2C push ecx
00434D2D mov edx,dword ptr [x]
00434D30 push edx
00434D31 mov eax,dword ptr [count]
00434D34 push eax
00434D35 push offset string "%d: x=%ld - x^3=%lld " (497D90h)
00434D3A call @ILT+5055(_printf) (4333C4h)
00434D3F add esp,14h
34: fprintf(fp,"%d: x=%ld - x^3=%lld ",count,x,y);
00434D42 mov eax,dword ptr [ebp-14h]
00434D45 push eax
00434D46 mov ecx,dword ptr [y]
00434D49 push ecx
00434D4A mov edx,dword ptr [x]
00434D4D push edx
00434D4E mov eax,dword ptr [count]
00434D51 push eax
00434D52 push offset string "%d: x=%ld - x^3=%lld " (497D90h)
00434D57 mov ecx,dword ptr [fp]
00434D5A push ecx
00434D5B call @ILT+1270(_fprintf) (4324FBh)
00434D60 add esp,18h
35: }
36: x+=10;
00434D63 mov eax,dword ptr [x]
00434D66 add eax,0Ah
00434D69 mov dword ptr [x],eax
37: }
00434D6C jmp main+84h (434C94h)
38:
39: fclose(fp);
00434D71 mov eax,dword ptr [fp]
00434D74 push eax
00434D75 call @ILT+1300(_fclose) (432519h)
00434D7A add esp,4
40: printf("press any key to continue...");
00434D7D push offset string "press any key to continue..." (497D6Ch)
00434D82 call @ILT+5055(_printf) (4333C4h)
00434D87 add esp,4
41: getch();
00434D8A call @ILT+1710(__getch) (4326B3h)
42: }
00434D8F jmp main + 183h (434D93h)
00434D91 jmp main + 185h (434D95h)
00434D93 xor eax,eax
00434D95 pop edi
00434D96 pop esi
00434D97 pop ebx
00434D98 add esp,10Ch
00434D9E cmp ebp,esp
00434DA0 call @ILT + 4010 (__RTC_CheckEsp) (432FAFh)
00434DA5 mov esp,ebp
00434DA7 pop ebp
00434DA8 ret
--- 无源文件 -----------------------------------------------------------------------
1 : #include < stdio.h >
2 : #include < stdlib.h >
3 : #include < math.h >
4 : #include < conio.h >
5 :
6 : #define MAXCOUNT 3000
7 :
8 : void main()
9 : ... {
00434C10 push ebp
00434C11 mov ebp,esp
00434C13 sub esp,10Ch
00434C19 push ebx
00434C1A push esi
00434C1B push edi
00434C1C lea edi,[ebp-10Ch]
00434C22 mov ecx,43h
00434C27 mov eax,0CCCCCCCCh
00434C2C rep stos dword ptr es:[edi]
10: unsigned int x=416442;//12;
00434C2E mov dword ptr [x],65ABAh
11: long long y=0,z=0;
00434C35 mov dword ptr [y],0
00434C3C mov dword ptr [ebp-14h],0
00434C43 mov dword ptr [z],0
00434C4A mov dword ptr [ebp-24h],0
12: int count=0;
00434C51 mov dword ptr [count],0
13:
14: FILE *fp=fopen("3次方结尾为888的数.txt","w");
00434C58 push offset string "w" (497E20h)
00434C5D push offset string "3´Î·½½áβΪ888µÄÊaaaaa"
(497E04h)
00434C62 call @ILT+1755(_fopen) (4326E0h)
00434C67 add esp,8
00434C6A mov dword ptr [fp],eax
15: if(fp==NULL)
00434C6D cmp dword ptr [fp],0
00434C71 jne main+77h (434C87h)
16: ...{
17: printf("can not wirte file!");
00434C73 push offset string "can not wirte file!" (497DECh)
00434C78 call @ILT+5055(_printf) (4333C4h)
00434C7D add esp,4
18: exit(0);
00434C80 push 0
00434C82 call @ILT+5365(_exit) (4334FAh)
19: }
20:
21: printf("the first 100 numbers is as follows: ");
00434C87 push offset string "the first 100 numbers is as foll"... (497DBCh)
00434C8C call @ILT+5055(_printf) (4333C4h)
00434C91 add esp,4
22: while(count<MAXCOUNT)
00434C94 cmp dword ptr [count],0BB8h
00434C9B jge main+161h (434D71h)
23: ...{
24: //y=1; y*=x; y*=x; y*=x;
25: //不能用
26: y=pow(x*1.0,3);
00434CA1 push 3
00434CA3 mov eax,dword ptr [x]
00434CA6 mov dword ptr [ebp-10Ch],eax
00434CAC mov dword ptr [ebp-108h],0
00434CB6 fild qword ptr [ebp-10Ch]
00434CBC fmul qword ptr [__real@3ff0000000000000 (497DB0h)]
00434CC2 sub esp,8
00434CC5 fstp qword ptr [esp]
00434CC8 call pow (4322FDh)
00434CCD add esp,0Ch
00434CD0 call @ILT+5090(__ftol2) (4333E7h)
00434CD5 mov dword ptr [y],eax
00434CD8 mov dword ptr [ebp-14h],edx
27:
28: z=y;
00434CDB mov eax,dword ptr [y]
00434CDE mov dword ptr [z],eax
00434CE1 mov ecx,dword ptr [ebp-14h]
00434CE4 mov dword ptr [ebp-24h],ecx
29: if(z%1000==888)
00434CE7 push 0
00434CE9 push 3E8h
00434CEE mov eax,dword ptr [ebp-24h]
00434CF1 push eax
00434CF2 mov ecx,dword ptr [z]
00434CF5 push ecx
00434CF6 call @ILT+1455(__allrem) (4325B4h)
00434CFB mov dword ptr [ebp-10Ch],eax
00434D01 mov dword ptr [ebp-108h],edx
00434D07 cmp dword ptr [ebp-10Ch],378h
00434D11 jne main+153h (434D63h)
00434D13 cmp dword ptr [ebp-108h],0
00434D1A jne main+153h (434D63h)
30: ...{
31: count++;
00434D1C mov eax,dword ptr [count]
00434D1F add eax,1
00434D22 mov dword ptr [count],eax
32: //显示该数据
33: printf("%d: x=%ld - x^3=%lld ",count,x,y);
00434D25 mov eax,dword ptr [ebp-14h]
00434D28 push eax
00434D29 mov ecx,dword ptr [y]
00434D2C push ecx
00434D2D mov edx,dword ptr [x]
00434D30 push edx
00434D31 mov eax,dword ptr [count]
00434D34 push eax
00434D35 push offset string "%d: x=%ld - x^3=%lld " (497D90h)
00434D3A call @ILT+5055(_printf) (4333C4h)
00434D3F add esp,14h
34: fprintf(fp,"%d: x=%ld - x^3=%lld ",count,x,y);
00434D42 mov eax,dword ptr [ebp-14h]
00434D45 push eax
00434D46 mov ecx,dword ptr [y]
00434D49 push ecx
00434D4A mov edx,dword ptr [x]
00434D4D push edx
00434D4E mov eax,dword ptr [count]
00434D51 push eax
00434D52 push offset string "%d: x=%ld - x^3=%lld " (497D90h)
00434D57 mov ecx,dword ptr [fp]
00434D5A push ecx
00434D5B call @ILT+1270(_fprintf) (4324FBh)
00434D60 add esp,18h
35: }
36: x+=10;
00434D63 mov eax,dword ptr [x]
00434D66 add eax,0Ah
00434D69 mov dword ptr [x],eax
37: }
00434D6C jmp main+84h (434C94h)
38:
39: fclose(fp);
00434D71 mov eax,dword ptr [fp]
00434D74 push eax
00434D75 call @ILT+1300(_fclose) (432519h)
00434D7A add esp,4
40: printf("press any key to continue...");
00434D7D push offset string "press any key to continue..." (497D6Ch)
00434D82 call @ILT+5055(_printf) (4333C4h)
00434D87 add esp,4
41: getch();
00434D8A call @ILT+1710(__getch) (4326B3h)
42: }
00434D8F jmp main + 183h (434D93h)
00434D91 jmp main + 185h (434D95h)
00434D93 xor eax,eax
00434D95 pop edi
00434D96 pop esi
00434D97 pop ebx
00434D98 add esp,10Ch
00434D9E cmp ebp,esp
00434DA0 call @ILT + 4010 (__RTC_CheckEsp) (432FAFh)
00434DA5 mov esp,ebp
00434DA7 pop ebp
00434DA8 ret
--- 无源文件 -----------------------------------------------------------------------
有汇编代码可以清楚地看到执行每一句时内存和寄存器的变化,此处贴出执行到以下代码时各个寄存器及内存的值
00434CA8 fild qword ptr [ebp
-
0FCh]
寄存器:
内存:
变量:
我们仔细看一下以下语句的汇编代码:
y
=
pow(x
*
1.0
,
3
);
其汇编代码如下:
25
: y
=
pow(x
*
1.0
,
3
);
00434C93 push 3
00434C95 mov eax,dword ptr [x]
00434C98 mov dword ptr [ebp - 0FCh],eax
00434C9E mov dword ptr [ebp - 0F8h], 0
00434CA8 fild qword ptr [ebp - 0FCh]
00434CAE fmul qword ptr [__real@3ff0000000000000 (497DB0h)]
00434CB4 sub esp, 8
00434CB7 fstp qword ptr [esp]
00434CBA call pow (4322FDh)
00434CBF add esp,0Ch
00434CC2 call @ILT + 5090 (__ftol2) (4333E7h)
00434CC7 mov dword ptr [y],eax
00434CCA mov dword ptr [ebp - 14h],edx
00434C93 push 3
00434C95 mov eax,dword ptr [x]
00434C98 mov dword ptr [ebp - 0FCh],eax
00434C9E mov dword ptr [ebp - 0F8h], 0
00434CA8 fild qword ptr [ebp - 0FCh]
00434CAE fmul qword ptr [__real@3ff0000000000000 (497DB0h)]
00434CB4 sub esp, 8
00434CB7 fstp qword ptr [esp]
00434CBA call pow (4322FDh)
00434CBF add esp,0Ch
00434CC2 call @ILT + 5090 (__ftol2) (4333E7h)
00434CC7 mov dword ptr [y],eax
00434CCA mov dword ptr [ebp - 14h],edx
命令解释:
fstp:从FPU的浮点寄存器栈中弹出一个浮点数,依据目标内存空间的大小转换成对应的精度,存入指定的内存地址;
fild:从内存中将一个2字节(word)、4字节(dword)或8字节(qword)带符号整数转换成一个浮点数并压入FPU的浮点寄存器栈。
在此我们就可以发现在数据精度转换时数据有丢失。
3。解决方法
各种数据类型的数据的取值范围如下:
Type Name
|
Bytes
|
Other Names
|
Range of Values
|
---|---|---|---|
int
|
4
|
signed
|
–2,147,483,648 to 2,147,483,647
|
__int8
|
1
|
char, signed char
|
–128 to 127
|
__int16
|
2
|
short, short int, signed short int
|
–32,768 to 32,767
|
__int32
|
4
|
signed, signed int, int
|
–2,147,483,648 to 2,147,483,647
|
__int64
|
8
|
long long, signed long long
|
–9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
|
bool
|
1
|
none
|
false or true
|
char
|
1
|
none
|
–128 to 127
|
short
|
2
|
short int, signed short int
|
–32,768 to 32,767
|
long
|
4
|
long int, signed long int
|
–2,147,483,648 to 2,147,483,647
|
long long
|
8
|
none (but equivalent to __int64)
|
–9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
|
enum
|
4
|
none
|
Same as int
|
float
|
4
|
none
|
3.4E +/- 38 (7 digits)
|
double
|
8
|
none
|
1.7E +/- 308 (15 digits)
|
long double
|
same as double
|
none
|
same as double
|
wchar_t
|
2
|
__wchar_t
|
0 to 65,535
|
将
y
=
pow(x
*
1.0
,
3
);
改为
y
=
1
; y
*=
x; y
*=
x; y
*=
x;
这样,在计算时就不存在数据类型和精度转换,避免了数据丢失。
修改后代码如下:
#include
<
stdio.h
>
#include < stdlib.h >
#include < math.h >
#include < conio.h >
#define MAXCOUNT 3000
void main()
... {
unsigned int x=12;
long long y=0l;
int count=0;
FILE *fp=fopen("3次方结尾为888的数.txt","w");
if(fp==NULL)
...{
printf("can not wirte file!");
exit(0);
}
printf("the first 100 numbers is as follows: ");
while(count<MAXCOUNT)
...{
y=1; y*=x; y*=x; y*=x;
if(y%1000==888)
...{
count++;
//显示该数据
printf("%d: x=%ld - x^3=%lld ",count,x,y);
fprintf(fp,"%d: x=%ld - x^3=%lld ",count,x,y);
}
x+=10;
}
fclose(fp);
printf("press any key to continue...");
getch();
}
#include < stdlib.h >
#include < math.h >
#include < conio.h >
#define MAXCOUNT 3000
void main()
... {
unsigned int x=12;
long long y=0l;
int count=0;
FILE *fp=fopen("3次方结尾为888的数.txt","w");
if(fp==NULL)
...{
printf("can not wirte file!");
exit(0);
}
printf("the first 100 numbers is as follows: ");
while(count<MAXCOUNT)
...{
y=1; y*=x; y*=x; y*=x;
if(y%1000==888)
...{
count++;
//显示该数据
printf("%d: x=%ld - x^3=%lld ",count,x,y);
fprintf(fp,"%d: x=%ld - x^3=%lld ",count,x,y);
}
x+=10;
}
fclose(fp);
printf("press any key to continue...");
getch();
}
其汇编代码如下:
---
c:documents and settingsyuzubo桌面 estcubetail888.cpp
-------------------
1 : #include < stdio.h >
2 : #include < stdlib.h >
3 : #include < math.h >
4 : #include < conio.h >
5 :
6 : #define MAXCOUNT 3000
7 :
8 : void main()
9 : ... {
004318B0 push ebp
004318B1 mov ebp,esp
004318B3 sub esp,0FCh
004318B9 push ebx
004318BA push esi
004318BB push edi
004318BC lea edi,[ebp-0FCh]
004318C2 mov ecx,3Fh
004318C7 mov eax,0CCCCCCCCh
004318CC rep stos dword ptr es:[edi]
10: unsigned int x=12;
004318CE mov dword ptr [x],0Ch
11: long long y=0l;
004318D5 mov dword ptr [y],0
004318DC mov dword ptr [ebp-14h],0
12: int count=0;
004318E3 mov dword ptr [count],0
13:
14: FILE *fp=fopen("3次方结尾为888的数.txt","w");
004318EA push offset string "w" (48EE10h)
004318EF push offset string "3´Î·½½áβΪ888µÄÊaaaaa" (48EDF4h)
004318F4 call @ILT+1640(_fopen) (42F66Dh)
004318F9 add esp,8
004318FC mov dword ptr [fp],eax
15: if(fp==NULL)
004318FF cmp dword ptr [fp],0
00431903 jne main+69h (431919h)
16: ...{
17: printf("can not wirte file!");
00431905 push offset string "can not wirte file!" (48EDDCh)
0043190A call @ILT+4685(_printf) (430252h)
0043190F add esp,4
18: exit(0);
00431912 push 0
00431914 call @ILT+4975(_exit) (430374h)
19: }
20:
21: printf("the first 100 numbers is as follows: ");
00431919 push offset string "the first 100 numbers is as foll"... (48EDACh)
0043191E call @ILT+4685(_printf) (430252h)
00431923 add esp,4
22: while(count<MAXCOUNT)
00431926 cmp dword ptr [count],0BB8h
0043192D jge main+169h (431A19h)
23: ...{
24: y=1; y*=x; y*=x; y*=x;
00431933 mov dword ptr [y],1
0043193A mov dword ptr [ebp-14h],0
00431941 mov eax,dword ptr [x]
00431944 xor ecx,ecx
00431946 push ecx
00431947 push eax
00431948 mov edx,dword ptr [ebp-14h]
0043194B push edx
0043194C mov eax,dword ptr [y]
0043194F push eax
00431950 call @ILT+1205(__allmul) (42F4BAh)
00431955 mov dword ptr [y],eax
00431958 mov dword ptr [ebp-14h],edx
0043195B mov eax,dword ptr [x]
0043195E xor ecx,ecx
00431960 push ecx
00431961 push eax
00431962 mov edx,dword ptr [ebp-14h]
00431965 push edx
00431966 mov eax,dword ptr [y]
00431969 push eax
0043196A call @ILT+1205(__allmul) (42F4BAh)
0043196F mov dword ptr [y],eax
00431972 mov dword ptr [ebp-14h],edx
00431975 mov eax,dword ptr [x]
00431978 xor ecx,ecx
0043197A push ecx
0043197B push eax
0043197C mov edx,dword ptr [ebp-14h]
0043197F push edx
00431980 mov eax,dword ptr [y]
00431983 push eax
00431984 call @ILT+1205(__allmul) (42F4BAh)
00431989 mov dword ptr [y],eax
0043198C mov dword ptr [ebp-14h],edx
25: if(y%1000==888)
0043198F push 0
00431991 push 3E8h
00431996 mov eax,dword ptr [ebp-14h]
00431999 push eax
0043199A mov ecx,dword ptr [y]
0043199D push ecx
0043199E call @ILT+1365(__allrem) (42F55Ah)
004319A3 mov dword ptr [ebp-0FCh],eax
004319A9 mov dword ptr [ebp-0F8h],edx
004319AF cmp dword ptr [ebp-0FCh],378h
004319B9 jne main+15Bh (431A0Bh)
004319BB cmp dword ptr [ebp-0F8h],0
004319C2 jne main+15Bh (431A0Bh)
26: ...{
27: count++;
004319C4 mov eax,dword ptr [count]
004319C7 add eax,1
004319CA mov dword ptr [count],eax
28: //显示该数据
29: printf("%d: x=%ld - x^3=%lld ",count,x,y);
004319CD mov eax,dword ptr [ebp-14h]
004319D0 push eax
004319D1 mov ecx,dword ptr [y]
004319D4 push ecx
004319D5 mov edx,dword ptr [x]
004319D8 push edx
004319D9 mov eax,dword ptr [count]
004319DC push eax
004319DD push offset string "%d: x=%ld - x^3=%lld " (48ED90h)
004319E2 call @ILT+4685(_printf) (430252h)
004319E7 add esp,14h
30: fprintf(fp,"%d: x=%ld - x^3=%lld ",count,x,y);
004319EA mov eax,dword ptr [ebp-14h]
004319ED push eax
004319EE mov ecx,dword ptr [y]
004319F1 push ecx
004319F2 mov edx,dword ptr [x]
004319F5 push edx
004319F6 mov eax,dword ptr [count]
004319F9 push eax
004319FA push offset string "%d: x=%ld - x^3=%lld " (48ED90h)
004319FF mov ecx,dword ptr [fp]
00431A02 push ecx
00431A03 call @ILT+1190(_fprintf) (42F4ABh)
00431A08 add esp,18h
31: }
32: x+=10;
00431A0B mov eax,dword ptr [x]
00431A0E add eax,0Ah
00431A11 mov dword ptr [x],eax
33: }
00431A14 jmp main+76h (431926h)
34:
35: fclose(fp);
00431A19 mov eax,dword ptr [fp]
00431A1C push eax
00431A1D call @ILT+1220(_fclose) (42F4C9h)
00431A22 add esp,4
36: printf("press any key to continue...");
00431A25 push offset string "press any key to continue..." (48ED6Ch)
00431A2A call @ILT+4685(_printf) (430252h)
00431A2F add esp,4
37: getch();
00431A32 call @ILT+1595(__getch) (42F640h)
38: }
00431A37 jmp main + 18Bh (431A3Bh)
00431A39 jmp main + 18Dh (431A3Dh)
00431A3B xor eax,eax
00431A3D pop edi
00431A3E pop esi
00431A3F pop ebx
00431A40 add esp,0FCh
00431A46 cmp ebp,esp
00431A48 call @ILT + 3680 (__RTC_CheckEsp) (42FE65h)
00431A4D mov esp,ebp
00431A4F pop ebp
00431A50 ret
--- 无源文件 -----------------------------------------------------------------------
1 : #include < stdio.h >
2 : #include < stdlib.h >
3 : #include < math.h >
4 : #include < conio.h >
5 :
6 : #define MAXCOUNT 3000
7 :
8 : void main()
9 : ... {
004318B0 push ebp
004318B1 mov ebp,esp
004318B3 sub esp,0FCh
004318B9 push ebx
004318BA push esi
004318BB push edi
004318BC lea edi,[ebp-0FCh]
004318C2 mov ecx,3Fh
004318C7 mov eax,0CCCCCCCCh
004318CC rep stos dword ptr es:[edi]
10: unsigned int x=12;
004318CE mov dword ptr [x],0Ch
11: long long y=0l;
004318D5 mov dword ptr [y],0
004318DC mov dword ptr [ebp-14h],0
12: int count=0;
004318E3 mov dword ptr [count],0
13:
14: FILE *fp=fopen("3次方结尾为888的数.txt","w");
004318EA push offset string "w" (48EE10h)
004318EF push offset string "3´Î·½½áβΪ888µÄÊaaaaa" (48EDF4h)
004318F4 call @ILT+1640(_fopen) (42F66Dh)
004318F9 add esp,8
004318FC mov dword ptr [fp],eax
15: if(fp==NULL)
004318FF cmp dword ptr [fp],0
00431903 jne main+69h (431919h)
16: ...{
17: printf("can not wirte file!");
00431905 push offset string "can not wirte file!" (48EDDCh)
0043190A call @ILT+4685(_printf) (430252h)
0043190F add esp,4
18: exit(0);
00431912 push 0
00431914 call @ILT+4975(_exit) (430374h)
19: }
20:
21: printf("the first 100 numbers is as follows: ");
00431919 push offset string "the first 100 numbers is as foll"... (48EDACh)
0043191E call @ILT+4685(_printf) (430252h)
00431923 add esp,4
22: while(count<MAXCOUNT)
00431926 cmp dword ptr [count],0BB8h
0043192D jge main+169h (431A19h)
23: ...{
24: y=1; y*=x; y*=x; y*=x;
00431933 mov dword ptr [y],1
0043193A mov dword ptr [ebp-14h],0
00431941 mov eax,dword ptr [x]
00431944 xor ecx,ecx
00431946 push ecx
00431947 push eax
00431948 mov edx,dword ptr [ebp-14h]
0043194B push edx
0043194C mov eax,dword ptr [y]
0043194F push eax
00431950 call @ILT+1205(__allmul) (42F4BAh)
00431955 mov dword ptr [y],eax
00431958 mov dword ptr [ebp-14h],edx
0043195B mov eax,dword ptr [x]
0043195E xor ecx,ecx
00431960 push ecx
00431961 push eax
00431962 mov edx,dword ptr [ebp-14h]
00431965 push edx
00431966 mov eax,dword ptr [y]
00431969 push eax
0043196A call @ILT+1205(__allmul) (42F4BAh)
0043196F mov dword ptr [y],eax
00431972 mov dword ptr [ebp-14h],edx
00431975 mov eax,dword ptr [x]
00431978 xor ecx,ecx
0043197A push ecx
0043197B push eax
0043197C mov edx,dword ptr [ebp-14h]
0043197F push edx
00431980 mov eax,dword ptr [y]
00431983 push eax
00431984 call @ILT+1205(__allmul) (42F4BAh)
00431989 mov dword ptr [y],eax
0043198C mov dword ptr [ebp-14h],edx
25: if(y%1000==888)
0043198F push 0
00431991 push 3E8h
00431996 mov eax,dword ptr [ebp-14h]
00431999 push eax
0043199A mov ecx,dword ptr [y]
0043199D push ecx
0043199E call @ILT+1365(__allrem) (42F55Ah)
004319A3 mov dword ptr [ebp-0FCh],eax
004319A9 mov dword ptr [ebp-0F8h],edx
004319AF cmp dword ptr [ebp-0FCh],378h
004319B9 jne main+15Bh (431A0Bh)
004319BB cmp dword ptr [ebp-0F8h],0
004319C2 jne main+15Bh (431A0Bh)
26: ...{
27: count++;
004319C4 mov eax,dword ptr [count]
004319C7 add eax,1
004319CA mov dword ptr [count],eax
28: //显示该数据
29: printf("%d: x=%ld - x^3=%lld ",count,x,y);
004319CD mov eax,dword ptr [ebp-14h]
004319D0 push eax
004319D1 mov ecx,dword ptr [y]
004319D4 push ecx
004319D5 mov edx,dword ptr [x]
004319D8 push edx
004319D9 mov eax,dword ptr [count]
004319DC push eax
004319DD push offset string "%d: x=%ld - x^3=%lld " (48ED90h)
004319E2 call @ILT+4685(_printf) (430252h)
004319E7 add esp,14h
30: fprintf(fp,"%d: x=%ld - x^3=%lld ",count,x,y);
004319EA mov eax,dword ptr [ebp-14h]
004319ED push eax
004319EE mov ecx,dword ptr [y]
004319F1 push ecx
004319F2 mov edx,dword ptr [x]
004319F5 push edx
004319F6 mov eax,dword ptr [count]
004319F9 push eax
004319FA push offset string "%d: x=%ld - x^3=%lld " (48ED90h)
004319FF mov ecx,dword ptr [fp]
00431A02 push ecx
00431A03 call @ILT+1190(_fprintf) (42F4ABh)
00431A08 add esp,18h
31: }
32: x+=10;
00431A0B mov eax,dword ptr [x]
00431A0E add eax,0Ah
00431A11 mov dword ptr [x],eax
33: }
00431A14 jmp main+76h (431926h)
34:
35: fclose(fp);
00431A19 mov eax,dword ptr [fp]
00431A1C push eax
00431A1D call @ILT+1220(_fclose) (42F4C9h)
00431A22 add esp,4
36: printf("press any key to continue...");
00431A25 push offset string "press any key to continue..." (48ED6Ch)
00431A2A call @ILT+4685(_printf) (430252h)
00431A2F add esp,4
37: getch();
00431A32 call @ILT+1595(__getch) (42F640h)
38: }
00431A37 jmp main + 18Bh (431A3Bh)
00431A39 jmp main + 18Dh (431A3Dh)
00431A3B xor eax,eax
00431A3D pop edi
00431A3E pop esi
00431A3F pop ebx
00431A40 add esp,0FCh
00431A46 cmp ebp,esp
00431A48 call @ILT + 3680 (__RTC_CheckEsp) (42FE65h)
00431A4D mov esp,ebp
00431A4F pop ebp
00431A50 ret
--- 无源文件 -----------------------------------------------------------------------
规律:
等差数列,首项为192,公差为250。
该方法的数学证明(归纳法):
x的个位是2,且x
3的尾数为888,故可写为
x=10*a+2,a>1,
y=x
3=1000*b+888,b>1,
因此
x
2=(10*a+2)
2=100*a
2+40*a+4
(x+250)
3=x
3+750*x
2+187500*x+62500*250
=(1000*b+888)+750*(100*a
2+40*a+4)+187500*(10*a+2)+15625000
=(1000*b+888)+(75000*a
2+3000*a+3000)+(1875000*a+375000)+15625000
=1000*(b+75*a
2+3*a+3+1875*a+375+15625)+888
=1000*(b+75*a
2+1878*a+16003)+888
=1000*c+888 (其中c=b+75*a
2+1878*a+16003)
显然(x+250)
3的尾数也为888。
故该方法能求得全部满足条件的数。
运行结果(贴出第1665~2000个数,其他的朋友们可以自己执行程序查看):
1665: x=416192 - x^3=72091022269349888
1666: x=416442 - x^3=72221012156622888
1667: x=416692 - x^3=72351158209645888
1668: x=416942 - x^3=72481460522168888
1669: x=417192 - x^3=72611919187941888
1670: x=417442 - x^3=72742534300714888
1671: x=417692 - x^3=72873305954237888
1672: x=417942 - x^3=73004234242260888
1673: x=418192 - x^3=73135319258533888
1674: x=418442 - x^3=73266561096806888
1675: x=418692 - x^3=73397959850829888
1676: x=418942 - x^3=73529515614352888
1677: x=419192 - x^3=73661228481125888
1678: x=419442 - x^3=73793098544898888
1679: x=419692 - x^3=73925125899421888
1680: x=419942 - x^3=74057310638444888
1681: x=420192 - x^3=74189652855717888
1682: x=420442 - x^3=74322152644990888
1683: x=420692 - x^3=74454810100013888
1684: x=420942 - x^3=74587625314536888
1685: x=421192 - x^3=74720598382309888
1686: x=421442 - x^3=74853729397082888
1687: x=421692 - x^3=74987018452605888
1688: x=421942 - x^3=75120465642628888
1689: x=422192 - x^3=75254071060901888
1690: x=422442 - x^3=75387834801174888
1691: x=422692 - x^3=75521756957197888
1692: x=422942 - x^3=75655837622720888
1693: x=423192 - x^3=75790076891493888
1694: x=423442 - x^3=75924474857266888
1695: x=423692 - x^3=76059031613789888
1696: x=423942 - x^3=76193747254812888
1697: x=424192 - x^3=76328621874085888
1698: x=424442 - x^3=76463655565358888
1699: x=424692 - x^3=76598848422381888
1700: x=424942 - x^3=76734200538904888
1701: x=425192 - x^3=76869712008677888
1702: x=425442 - x^3=77005382925450888
1703: x=425692 - x^3=77141213382973888
1704: x=425942 - x^3=77277203474996888
1705: x=426192 - x^3=77413353295269888
1706: x=426442 - x^3=77549662937542888
1707: x=426692 - x^3=77686132495565888
1708: x=426942 - x^3=77822762063088888
1709: x=427192 - x^3=77959551733861888
1710: x=427442 - x^3=78096501601634888
1711: x=427692 - x^3=78233611760157888
1712: x=427942 - x^3=78370882303180888
1713: x=428192 - x^3=78508313324453888
1714: x=428442 - x^3=78645904917726888
1715: x=428692 - x^3=78783657176749888
1716: x=428942 - x^3=78921570195272888
1717: x=429192 - x^3=79059644067045888
1718: x=429442 - x^3=79197878885818888
1719: x=429692 - x^3=79336274745341888
1720: x=429942 - x^3=79474831739364888
1721: x=430192 - x^3=79613549961637888
1722: x=430442 - x^3=79752429505910888
1723: x=430692 - x^3=79891470465933888
1724: x=430942 - x^3=80030672935456888
1725: x=431192 - x^3=80170037008229888
1726: x=431442 - x^3=80309562778002888
1727: x=431692 - x^3=80449250338525888
1728: x=431942 - x^3=80589099783548888
1729: x=432192 - x^3=80729111206821888
1730: x=432442 - x^3=80869284702094888
1731: x=432692 - x^3=81009620363117888
1732: x=432942 - x^3=81150118283640888
1733: x=433192 - x^3=81290778557413888
1734: x=433442 - x^3=81431601278186888
1735: x=433692 - x^3=81572586539709888
1736: x=433942 - x^3=81713734435732888
1737: x=434192 - x^3=81855045060005888
1738: x=434442 - x^3=81996518506278888
1739: x=434692 - x^3=82138154868301888
1740: x=434942 - x^3=82279954239824888
1741: x=435192 - x^3=82421916714597888
1742: x=435442 - x^3=82564042386370888
1743: x=435692 - x^3=82706331348893888
1744: x=435942 - x^3=82848783695916888
1745: x=436192 - x^3=82991399521189888
1746: x=436442 - x^3=83134178918462888
1747: x=436692 - x^3=83277121981485888
1748: x=436942 - x^3=83420228804008888
1749: x=437192 - x^3=83563499479781888
1750: x=437442 - x^3=83706934102554888
1751: x=437692 - x^3=83850532766077888
1752: x=437942 - x^3=83994295564100888
1753: x=438192 - x^3=84138222590373888
1754: x=438442 - x^3=84282313938646888
1755: x=438692 - x^3=84426569702669888
1756: x=438942 - x^3=84570989976192888
1757: x=439192 - x^3=84715574852965888
1758: x=439442 - x^3=84860324426738888
1759: x=439692 - x^3=85005238791261888
1760: x=439942 - x^3=85150318040284888
1761: x=440192 - x^3=85295562267557888
1762: x=440442 - x^3=85440971566830888
1763: x=440692 - x^3=85586546031853888
1764: x=440942 - x^3=85732285756376888
1765: x=441192 - x^3=85878190834149888
1766: x=441442 - x^3=86024261358922888
1767: x=441692 - x^3=86170497424445888
1768: x=441942 - x^3=86316899124468888
1769: x=442192 - x^3=86463466552741888
1770: x=442442 - x^3=86610199803014888
1771: x=442692 - x^3=86757098969037888
1772: x=442942 - x^3=86904164144560888
1773: x=443192 - x^3=87051395423333888
1774: x=443442 - x^3=87198792899106888
1775: x=443692 - x^3=87346356665629888
1776: x=443942 - x^3=87494086816652888
1777: x=444192 - x^3=87641983445925888
1778: x=444442 - x^3=87790046647198888
1779: x=444692 - x^3=87938276514221888
1780: x=444942 - x^3=88086673140744888
1781: x=445192 - x^3=88235236620517888
1782: x=445442 - x^3=88383967047290888
1783: x=445692 - x^3=88532864514813888
1784: x=445942 - x^3=88681929116836888
1785: x=446192 - x^3=88831160947109888
1786: x=446442 - x^3=88980560099382888
1787: x=446692 - x^3=89130126667405888
1788: x=446942 - x^3=89279860744928888
1789: x=447192 - x^3=89429762425701888
1790: x=447442 - x^3=89579831803474888
1791: x=447692 - x^3=89730068971997888
1792: x=447942 - x^3=89880474025020888
1793: x=448192 - x^3=90031047056293888
1794: x=448442 - x^3=90181788159566888
1795: x=448692 - x^3=90332697428589888
1796: x=448942 - x^3=90483774957112888
1797: x=449192 - x^3=90635020838885888
1798: x=449442 - x^3=90786435167658888
1799: x=449692 - x^3=90938018037181888
1800: x=449942 - x^3=91089769541204888
1801: x=450192 - x^3=91241689773477888
1802: x=450442 - x^3=91393778827750888
1803: x=450692 - x^3=91546036797773888
1804: x=450942 - x^3=91698463777296888
1805: x=451192 - x^3=91851059860069888
1806: x=451442 - x^3=92003825139842888
1807: x=451692 - x^3=92156759710365888
1808: x=451942 - x^3=92309863665388888
1809: x=452192 - x^3=92463137098661888
1810: x=452442 - x^3=92616580103934888
1811: x=452692 - x^3=92770192774957888
1812: x=452942 - x^3=92923975205480888
1813: x=453192 - x^3=93077927489253888
1814: x=453442 - x^3=93232049720026888
1815: x=453692 - x^3=93386341991549888
1816: x=453942 - x^3=93540804397572888
1817: x=454192 - x^3=93695437031845888
1818: x=454442 - x^3=93850239988118888
1819: x=454692 - x^3=94005213360141888
1820: x=454942 - x^3=94160357241664888
1821: x=455192 - x^3=94315671726437888
1822: x=455442 - x^3=94471156908210888
1823: x=455692 - x^3=94626812880733888
1824: x=455942 - x^3=94782639737756888
1825: x=456192 - x^3=94938637573029888
1826: x=456442 - x^3=95094806480302888
1827: x=456692 - x^3=95251146553325888
1828: x=456942 - x^3=95407657885848888
1829: x=457192 - x^3=95564340571621888
1830: x=457442 - x^3=95721194704394888
1831: x=457692 - x^3=95878220377917888
1832: x=457942 - x^3=96035417685940888
1833: x=458192 - x^3=96192786722213888
1834: x=458442 - x^3=96350327580486888
1835: x=458692 - x^3=96508040354509888
1836: x=458942 - x^3=96665925138032888
1837: x=459192 - x^3=96823982024805888
1838: x=459442 - x^3=96982211108578888
1839: x=459692 - x^3=97140612483101888
1840: x=459942 - x^3=97299186242124888
1841: x=460192 - x^3=97457932479397888
1842: x=460442 - x^3=97616851288670888
1843: x=460692 - x^3=97775942763693888
1844: x=460942 - x^3=97935206998216888
1845: x=461192 - x^3=98094644085989888
1846: x=461442 - x^3=98254254120762888
1847: x=461692 - x^3=98414037196285888
1848: x=461942 - x^3=98573993406308888
1849: x=462192 - x^3=98734122844581888
1850: x=462442 - x^3=98894425604854888
1851: x=462692 - x^3=99054901780877888
1852: x=462942 - x^3=99215551466400888
1853: x=463192 - x^3=99376374755173888
1854: x=463442 - x^3=99537371740946888
1855: x=463692 - x^3=99698542517469888
1856: x=463942 - x^3=99859887178492888
1857: x=464192 - x^3=100021405817765888
1858: x=464442 - x^3=100183098529038888
1859: x=464692 - x^3=100344965406061888
1860: x=464942 - x^3=100507006542584888
1861: x=465192 - x^3=100669222032357888
1862: x=465442 - x^3=100831611969130888
1863: x=465692 - x^3=100994176446653888
1864: x=465942 - x^3=101156915558676888
1865: x=466192 - x^3=101319829398949888
1866: x=466442 - x^3=101482918061222888
1867: x=466692 - x^3=101646181639245888
1868: x=466942 - x^3=101809620226768888
1869: x=467192 - x^3=101973233917541888
1870: x=467442 - x^3=102137022805314888
1871: x=467692 - x^3=102300986983837888
1872: x=467942 - x^3=102465126546860888
1873: x=468192 - x^3=102629441588133888
1874: x=468442 - x^3=102793932201406888
1875: x=468692 - x^3=102958598480429888
1876: x=468942 - x^3=103123440518952888
1877: x=469192 - x^3=103288458410725888
1878: x=469442 - x^3=103453652249498888
1879: x=469692 - x^3=103619022129021888
1880: x=469942 - x^3=103784568143044888
1881: x=470192 - x^3=103950290385317888
1882: x=470442 - x^3=104116188949590888
1883: x=470692 - x^3=104282263929613888
1884: x=470942 - x^3=104448515419136888
1885: x=471192 - x^3=104614943511909888
1886: x=471442 - x^3=104781548301682888
1887: x=471692 - x^3=104948329882205888
1888: x=471942 - x^3=105115288347228888
1889: x=472192 - x^3=105282423790501888
1890: x=472442 - x^3=105449736305774888
1891: x=472692 - x^3=105617225986797888
1892: x=472942 - x^3=105784892927320888
1893: x=473192 - x^3=105952737221093888
1894: x=473442 - x^3=106120758961866888
1895: x=473692 - x^3=106288958243389888
1896: x=473942 - x^3=106457335159412888
1897: x=474192 - x^3=106625889803685888
1898: x=474442 - x^3=106794622269958888
1899: x=474692 - x^3=106963532651981888
1900: x=474942 - x^3=107132621043504888
1901: x=475192 - x^3=107301887538277888
1902: x=475442 - x^3=107471332230050888
1903: x=475692 - x^3=107640955212573888
1904: x=475942 - x^3=107810756579596888
1905: x=476192 - x^3=107980736424869888
1906: x=476442 - x^3=108150894842142888
1907: x=476692 - x^3=108321231925165888
1908: x=476942 - x^3=108491747767688888
1909: x=477192 - x^3=108662442463461888
1910: x=477442 - x^3=108833316106234888
1911: x=477692 - x^3=109004368789757888
1912: x=477942 - x^3=109175600607780888
1913: x=478192 - x^3=109347011654053888
1914: x=478442 - x^3=109518602022326888
1915: x=478692 - x^3=109690371806349888
1916: x=478942 - x^3=109862321099872888
1917: x=479192 - x^3=110034449996645888
1918: x=479442 - x^3=110206758590418888
1919: x=479692 - x^3=110379246974941888
1920: x=479942 - x^3=110551915243964888
1921: x=480192 - x^3=110724763491237888
1922: x=480442 - x^3=110897791810510888
1923: x=480692 - x^3=111071000295533888
1924: x=480942 - x^3=111244389040056888
1925: x=481192 - x^3=111417958137829888
1926: x=481442 - x^3=111591707682602888
1927: x=481692 - x^3=111765637768125888
1928: x=481942 - x^3=111939748488148888
1929: x=482192 - x^3=112114039936421888
1930: x=482442 - x^3=112288512206694888
1931: x=482692 - x^3=112463165392717888
1932: x=482942 - x^3=112637999588240888
1933: x=483192 - x^3=112813014887013888
1934: x=483442 - x^3=112988211382786888
1935: x=483692 - x^3=113163589169309888
1936: x=483942 - x^3=113339148340332888
1937: x=484192 - x^3=113514888989605888
1938: x=484442 - x^3=113690811210878888
1939: x=484692 - x^3=113866915097901888
1940: x=484942 - x^3=114043200744424888
1941: x=485192 - x^3=114219668244197888
1942: x=485442 - x^3=114396317690970888
1943: x=485692 - x^3=114573149178493888
1944: x=485942 - x^3=114750162800516888
1945: x=486192 - x^3=114927358650789888
1946: x=486442 - x^3=115104736823062888
1947: x=486692 - x^3=115282297411085888
1948: x=486942 - x^3=115460040508608888
1949: x=487192 - x^3=115637966209381888
1950: x=487442 - x^3=115816074607154888
1951: x=487692 - x^3=115994365795677888
1952: x=487942 - x^3=116172839868700888
1953: x=488192 - x^3=116351496919973888
1954: x=488442 - x^3=116530337043246888
1955: x=488692 - x^3=116709360332269888
1956: x=488942 - x^3=116888566880792888
1957: x=489192 - x^3=117067956782565888
1958: x=489442 - x^3=117247530131338888
1959: x=489692 - x^3=117427287020861888
1960: x=489942 - x^3=117607227544884888
1961: x=490192 - x^3=117787351797157888
1962: x=490442 - x^3=117967659871430888
1963: x=490692 - x^3=118148151861453888
1964: x=490942 - x^3=118328827860976888
1965: x=491192 - x^3=118509687963749888
1966: x=491442 - x^3=118690732263522888
1967: x=491692 - x^3=118871960854045888
1968: x=491942 - x^3=119053373829068888
1969: x=492192 - x^3=119234971282341888
1970: x=492442 - x^3=119416753307614888
1971: x=492692 - x^3=119598719998637888
1972: x=492942 - x^3=119780871449160888
1973: x=493192 - x^3=119963207752933888
1974: x=493442 - x^3=120145729003706888
1975: x=493692 - x^3=120328435295229888
1976: x=493942 - x^3=120511326721252888
1977: x=494192 - x^3=120694403375525888
1978: x=494442 - x^3=120877665351798888
1979: x=494692 - x^3=121061112743821888
1980: x=494942 - x^3=121244745645344888
1981: x=495192 - x^3=121428564150117888
1982: x=495442 - x^3=121612568351890888
1983: x=495692 - x^3=121796758344413888
1984: x=495942 - x^3=121981134221436888
1985: x=496192 - x^3=122165696076709888
1986: x=496442 - x^3=122350444003982888
1987: x=496692 - x^3=122535378097005888
1988: x=496942 - x^3=122720498449528888
1989: x=497192 - x^3=122905805155301888
1990: x=497442 - x^3=123091298308074888
1991: x=497692 - x^3=123276978001597888
1992: x=497942 - x^3=123462844329620888
1993: x=498192 - x^3=123648897385893888
1994: x=498442 - x^3=123835137264166888
1995: x=498692 - x^3=124021564058189888
1996: x=498942 - x^3=124208177861712888
1997: x=499192 - x^3=124394978768485888
1998: x=499442 - x^3=124581966872258888
1999: x=499692 - x^3=124769142266781888
2000: x=499942 - x^3=124956505045804888
1666: x=416442 - x^3=72221012156622888
1667: x=416692 - x^3=72351158209645888
1668: x=416942 - x^3=72481460522168888
1669: x=417192 - x^3=72611919187941888
1670: x=417442 - x^3=72742534300714888
1671: x=417692 - x^3=72873305954237888
1672: x=417942 - x^3=73004234242260888
1673: x=418192 - x^3=73135319258533888
1674: x=418442 - x^3=73266561096806888
1675: x=418692 - x^3=73397959850829888
1676: x=418942 - x^3=73529515614352888
1677: x=419192 - x^3=73661228481125888
1678: x=419442 - x^3=73793098544898888
1679: x=419692 - x^3=73925125899421888
1680: x=419942 - x^3=74057310638444888
1681: x=420192 - x^3=74189652855717888
1682: x=420442 - x^3=74322152644990888
1683: x=420692 - x^3=74454810100013888
1684: x=420942 - x^3=74587625314536888
1685: x=421192 - x^3=74720598382309888
1686: x=421442 - x^3=74853729397082888
1687: x=421692 - x^3=74987018452605888
1688: x=421942 - x^3=75120465642628888
1689: x=422192 - x^3=75254071060901888
1690: x=422442 - x^3=75387834801174888
1691: x=422692 - x^3=75521756957197888
1692: x=422942 - x^3=75655837622720888
1693: x=423192 - x^3=75790076891493888
1694: x=423442 - x^3=75924474857266888
1695: x=423692 - x^3=76059031613789888
1696: x=423942 - x^3=76193747254812888
1697: x=424192 - x^3=76328621874085888
1698: x=424442 - x^3=76463655565358888
1699: x=424692 - x^3=76598848422381888
1700: x=424942 - x^3=76734200538904888
1701: x=425192 - x^3=76869712008677888
1702: x=425442 - x^3=77005382925450888
1703: x=425692 - x^3=77141213382973888
1704: x=425942 - x^3=77277203474996888
1705: x=426192 - x^3=77413353295269888
1706: x=426442 - x^3=77549662937542888
1707: x=426692 - x^3=77686132495565888
1708: x=426942 - x^3=77822762063088888
1709: x=427192 - x^3=77959551733861888
1710: x=427442 - x^3=78096501601634888
1711: x=427692 - x^3=78233611760157888
1712: x=427942 - x^3=78370882303180888
1713: x=428192 - x^3=78508313324453888
1714: x=428442 - x^3=78645904917726888
1715: x=428692 - x^3=78783657176749888
1716: x=428942 - x^3=78921570195272888
1717: x=429192 - x^3=79059644067045888
1718: x=429442 - x^3=79197878885818888
1719: x=429692 - x^3=79336274745341888
1720: x=429942 - x^3=79474831739364888
1721: x=430192 - x^3=79613549961637888
1722: x=430442 - x^3=79752429505910888
1723: x=430692 - x^3=79891470465933888
1724: x=430942 - x^3=80030672935456888
1725: x=431192 - x^3=80170037008229888
1726: x=431442 - x^3=80309562778002888
1727: x=431692 - x^3=80449250338525888
1728: x=431942 - x^3=80589099783548888
1729: x=432192 - x^3=80729111206821888
1730: x=432442 - x^3=80869284702094888
1731: x=432692 - x^3=81009620363117888
1732: x=432942 - x^3=81150118283640888
1733: x=433192 - x^3=81290778557413888
1734: x=433442 - x^3=81431601278186888
1735: x=433692 - x^3=81572586539709888
1736: x=433942 - x^3=81713734435732888
1737: x=434192 - x^3=81855045060005888
1738: x=434442 - x^3=81996518506278888
1739: x=434692 - x^3=82138154868301888
1740: x=434942 - x^3=82279954239824888
1741: x=435192 - x^3=82421916714597888
1742: x=435442 - x^3=82564042386370888
1743: x=435692 - x^3=82706331348893888
1744: x=435942 - x^3=82848783695916888
1745: x=436192 - x^3=82991399521189888
1746: x=436442 - x^3=83134178918462888
1747: x=436692 - x^3=83277121981485888
1748: x=436942 - x^3=83420228804008888
1749: x=437192 - x^3=83563499479781888
1750: x=437442 - x^3=83706934102554888
1751: x=437692 - x^3=83850532766077888
1752: x=437942 - x^3=83994295564100888
1753: x=438192 - x^3=84138222590373888
1754: x=438442 - x^3=84282313938646888
1755: x=438692 - x^3=84426569702669888
1756: x=438942 - x^3=84570989976192888
1757: x=439192 - x^3=84715574852965888
1758: x=439442 - x^3=84860324426738888
1759: x=439692 - x^3=85005238791261888
1760: x=439942 - x^3=85150318040284888
1761: x=440192 - x^3=85295562267557888
1762: x=440442 - x^3=85440971566830888
1763: x=440692 - x^3=85586546031853888
1764: x=440942 - x^3=85732285756376888
1765: x=441192 - x^3=85878190834149888
1766: x=441442 - x^3=86024261358922888
1767: x=441692 - x^3=86170497424445888
1768: x=441942 - x^3=86316899124468888
1769: x=442192 - x^3=86463466552741888
1770: x=442442 - x^3=86610199803014888
1771: x=442692 - x^3=86757098969037888
1772: x=442942 - x^3=86904164144560888
1773: x=443192 - x^3=87051395423333888
1774: x=443442 - x^3=87198792899106888
1775: x=443692 - x^3=87346356665629888
1776: x=443942 - x^3=87494086816652888
1777: x=444192 - x^3=87641983445925888
1778: x=444442 - x^3=87790046647198888
1779: x=444692 - x^3=87938276514221888
1780: x=444942 - x^3=88086673140744888
1781: x=445192 - x^3=88235236620517888
1782: x=445442 - x^3=88383967047290888
1783: x=445692 - x^3=88532864514813888
1784: x=445942 - x^3=88681929116836888
1785: x=446192 - x^3=88831160947109888
1786: x=446442 - x^3=88980560099382888
1787: x=446692 - x^3=89130126667405888
1788: x=446942 - x^3=89279860744928888
1789: x=447192 - x^3=89429762425701888
1790: x=447442 - x^3=89579831803474888
1791: x=447692 - x^3=89730068971997888
1792: x=447942 - x^3=89880474025020888
1793: x=448192 - x^3=90031047056293888
1794: x=448442 - x^3=90181788159566888
1795: x=448692 - x^3=90332697428589888
1796: x=448942 - x^3=90483774957112888
1797: x=449192 - x^3=90635020838885888
1798: x=449442 - x^3=90786435167658888
1799: x=449692 - x^3=90938018037181888
1800: x=449942 - x^3=91089769541204888
1801: x=450192 - x^3=91241689773477888
1802: x=450442 - x^3=91393778827750888
1803: x=450692 - x^3=91546036797773888
1804: x=450942 - x^3=91698463777296888
1805: x=451192 - x^3=91851059860069888
1806: x=451442 - x^3=92003825139842888
1807: x=451692 - x^3=92156759710365888
1808: x=451942 - x^3=92309863665388888
1809: x=452192 - x^3=92463137098661888
1810: x=452442 - x^3=92616580103934888
1811: x=452692 - x^3=92770192774957888
1812: x=452942 - x^3=92923975205480888
1813: x=453192 - x^3=93077927489253888
1814: x=453442 - x^3=93232049720026888
1815: x=453692 - x^3=93386341991549888
1816: x=453942 - x^3=93540804397572888
1817: x=454192 - x^3=93695437031845888
1818: x=454442 - x^3=93850239988118888
1819: x=454692 - x^3=94005213360141888
1820: x=454942 - x^3=94160357241664888
1821: x=455192 - x^3=94315671726437888
1822: x=455442 - x^3=94471156908210888
1823: x=455692 - x^3=94626812880733888
1824: x=455942 - x^3=94782639737756888
1825: x=456192 - x^3=94938637573029888
1826: x=456442 - x^3=95094806480302888
1827: x=456692 - x^3=95251146553325888
1828: x=456942 - x^3=95407657885848888
1829: x=457192 - x^3=95564340571621888
1830: x=457442 - x^3=95721194704394888
1831: x=457692 - x^3=95878220377917888
1832: x=457942 - x^3=96035417685940888
1833: x=458192 - x^3=96192786722213888
1834: x=458442 - x^3=96350327580486888
1835: x=458692 - x^3=96508040354509888
1836: x=458942 - x^3=96665925138032888
1837: x=459192 - x^3=96823982024805888
1838: x=459442 - x^3=96982211108578888
1839: x=459692 - x^3=97140612483101888
1840: x=459942 - x^3=97299186242124888
1841: x=460192 - x^3=97457932479397888
1842: x=460442 - x^3=97616851288670888
1843: x=460692 - x^3=97775942763693888
1844: x=460942 - x^3=97935206998216888
1845: x=461192 - x^3=98094644085989888
1846: x=461442 - x^3=98254254120762888
1847: x=461692 - x^3=98414037196285888
1848: x=461942 - x^3=98573993406308888
1849: x=462192 - x^3=98734122844581888
1850: x=462442 - x^3=98894425604854888
1851: x=462692 - x^3=99054901780877888
1852: x=462942 - x^3=99215551466400888
1853: x=463192 - x^3=99376374755173888
1854: x=463442 - x^3=99537371740946888
1855: x=463692 - x^3=99698542517469888
1856: x=463942 - x^3=99859887178492888
1857: x=464192 - x^3=100021405817765888
1858: x=464442 - x^3=100183098529038888
1859: x=464692 - x^3=100344965406061888
1860: x=464942 - x^3=100507006542584888
1861: x=465192 - x^3=100669222032357888
1862: x=465442 - x^3=100831611969130888
1863: x=465692 - x^3=100994176446653888
1864: x=465942 - x^3=101156915558676888
1865: x=466192 - x^3=101319829398949888
1866: x=466442 - x^3=101482918061222888
1867: x=466692 - x^3=101646181639245888
1868: x=466942 - x^3=101809620226768888
1869: x=467192 - x^3=101973233917541888
1870: x=467442 - x^3=102137022805314888
1871: x=467692 - x^3=102300986983837888
1872: x=467942 - x^3=102465126546860888
1873: x=468192 - x^3=102629441588133888
1874: x=468442 - x^3=102793932201406888
1875: x=468692 - x^3=102958598480429888
1876: x=468942 - x^3=103123440518952888
1877: x=469192 - x^3=103288458410725888
1878: x=469442 - x^3=103453652249498888
1879: x=469692 - x^3=103619022129021888
1880: x=469942 - x^3=103784568143044888
1881: x=470192 - x^3=103950290385317888
1882: x=470442 - x^3=104116188949590888
1883: x=470692 - x^3=104282263929613888
1884: x=470942 - x^3=104448515419136888
1885: x=471192 - x^3=104614943511909888
1886: x=471442 - x^3=104781548301682888
1887: x=471692 - x^3=104948329882205888
1888: x=471942 - x^3=105115288347228888
1889: x=472192 - x^3=105282423790501888
1890: x=472442 - x^3=105449736305774888
1891: x=472692 - x^3=105617225986797888
1892: x=472942 - x^3=105784892927320888
1893: x=473192 - x^3=105952737221093888
1894: x=473442 - x^3=106120758961866888
1895: x=473692 - x^3=106288958243389888
1896: x=473942 - x^3=106457335159412888
1897: x=474192 - x^3=106625889803685888
1898: x=474442 - x^3=106794622269958888
1899: x=474692 - x^3=106963532651981888
1900: x=474942 - x^3=107132621043504888
1901: x=475192 - x^3=107301887538277888
1902: x=475442 - x^3=107471332230050888
1903: x=475692 - x^3=107640955212573888
1904: x=475942 - x^3=107810756579596888
1905: x=476192 - x^3=107980736424869888
1906: x=476442 - x^3=108150894842142888
1907: x=476692 - x^3=108321231925165888
1908: x=476942 - x^3=108491747767688888
1909: x=477192 - x^3=108662442463461888
1910: x=477442 - x^3=108833316106234888
1911: x=477692 - x^3=109004368789757888
1912: x=477942 - x^3=109175600607780888
1913: x=478192 - x^3=109347011654053888
1914: x=478442 - x^3=109518602022326888
1915: x=478692 - x^3=109690371806349888
1916: x=478942 - x^3=109862321099872888
1917: x=479192 - x^3=110034449996645888
1918: x=479442 - x^3=110206758590418888
1919: x=479692 - x^3=110379246974941888
1920: x=479942 - x^3=110551915243964888
1921: x=480192 - x^3=110724763491237888
1922: x=480442 - x^3=110897791810510888
1923: x=480692 - x^3=111071000295533888
1924: x=480942 - x^3=111244389040056888
1925: x=481192 - x^3=111417958137829888
1926: x=481442 - x^3=111591707682602888
1927: x=481692 - x^3=111765637768125888
1928: x=481942 - x^3=111939748488148888
1929: x=482192 - x^3=112114039936421888
1930: x=482442 - x^3=112288512206694888
1931: x=482692 - x^3=112463165392717888
1932: x=482942 - x^3=112637999588240888
1933: x=483192 - x^3=112813014887013888
1934: x=483442 - x^3=112988211382786888
1935: x=483692 - x^3=113163589169309888
1936: x=483942 - x^3=113339148340332888
1937: x=484192 - x^3=113514888989605888
1938: x=484442 - x^3=113690811210878888
1939: x=484692 - x^3=113866915097901888
1940: x=484942 - x^3=114043200744424888
1941: x=485192 - x^3=114219668244197888
1942: x=485442 - x^3=114396317690970888
1943: x=485692 - x^3=114573149178493888
1944: x=485942 - x^3=114750162800516888
1945: x=486192 - x^3=114927358650789888
1946: x=486442 - x^3=115104736823062888
1947: x=486692 - x^3=115282297411085888
1948: x=486942 - x^3=115460040508608888
1949: x=487192 - x^3=115637966209381888
1950: x=487442 - x^3=115816074607154888
1951: x=487692 - x^3=115994365795677888
1952: x=487942 - x^3=116172839868700888
1953: x=488192 - x^3=116351496919973888
1954: x=488442 - x^3=116530337043246888
1955: x=488692 - x^3=116709360332269888
1956: x=488942 - x^3=116888566880792888
1957: x=489192 - x^3=117067956782565888
1958: x=489442 - x^3=117247530131338888
1959: x=489692 - x^3=117427287020861888
1960: x=489942 - x^3=117607227544884888
1961: x=490192 - x^3=117787351797157888
1962: x=490442 - x^3=117967659871430888
1963: x=490692 - x^3=118148151861453888
1964: x=490942 - x^3=118328827860976888
1965: x=491192 - x^3=118509687963749888
1966: x=491442 - x^3=118690732263522888
1967: x=491692 - x^3=118871960854045888
1968: x=491942 - x^3=119053373829068888
1969: x=492192 - x^3=119234971282341888
1970: x=492442 - x^3=119416753307614888
1971: x=492692 - x^3=119598719998637888
1972: x=492942 - x^3=119780871449160888
1973: x=493192 - x^3=119963207752933888
1974: x=493442 - x^3=120145729003706888
1975: x=493692 - x^3=120328435295229888
1976: x=493942 - x^3=120511326721252888
1977: x=494192 - x^3=120694403375525888
1978: x=494442 - x^3=120877665351798888
1979: x=494692 - x^3=121061112743821888
1980: x=494942 - x^3=121244745645344888
1981: x=495192 - x^3=121428564150117888
1982: x=495442 - x^3=121612568351890888
1983: x=495692 - x^3=121796758344413888
1984: x=495942 - x^3=121981134221436888
1985: x=496192 - x^3=122165696076709888
1986: x=496442 - x^3=122350444003982888
1987: x=496692 - x^3=122535378097005888
1988: x=496942 - x^3=122720498449528888
1989: x=497192 - x^3=122905805155301888
1990: x=497442 - x^3=123091298308074888
1991: x=497692 - x^3=123276978001597888
1992: x=497942 - x^3=123462844329620888
1993: x=498192 - x^3=123648897385893888
1994: x=498442 - x^3=123835137264166888
1995: x=498692 - x^3=124021564058189888
1996: x=498942 - x^3=124208177861712888
1997: x=499192 - x^3=124394978768485888
1998: x=499442 - x^3=124581966872258888
1999: x=499692 - x^3=124769142266781888
2000: x=499942 - x^3=124956505045804888