(*http://bbs.emath.ac.cn/thread-4044-1-1.html*)
(*x^2=abc的形式,其中a是n位数,b是n位数,c是2n位数,abc是4n位数,并且a*b=c*)
Clear["Global`*"];(*Clear all variables*)
n=4;(*第一个乘数的位数的个数,这个完全平方数应该有4n位数*)
Do[out=Reduce[x^2==a*10^(3*n)+b*10^(2*n)+a*b
&&(b>0&&b<10^n) (*b大于零,且b的位不超过n+1*)
&&(x>0&&x<10^(2*n)) (*x大于零,且x的位小于2n+1*)
&&a*b>=10^(2*n-1),(*乘积应该是2n位数*)
{x,b},Integers];
If[out===False,(*如果输出结果是False,注意是===,而不是==*)
,(*不输出任何结果*)
(*输出符合要求的结果*)
(*在Reduce函数中x\b是变量,所以此处赋值的话会影响上面的Reduce函数的求值*)
{x0,b0}={x,b}/.ToRules@out;
a0=a;
Print@{x0,a0,b0,a0*b0,x0^2}
],
{a,10^(n-1),10^n-1}](*第一个乘数的可能的范围*)
{60004320,3600,5184,18662400,3600518418662400}
{70006860,4900,9604,47059600,4900960447059600}
这个是4位数的所有的结果 所有的5位数的情况!!!!!!!!!!!!!!!!
(*特殊的平方数*)
(*http://bbs.emath.ac.cn/thread-4044-1-1.html*)
(*x^2=abc的形式,其中a是n位数,b是n位数,c是2n位数,abc是4n位数,并且a*b=c*)
Clear["Global`*"];(*Clear all variables*)
n=5;(*第一个乘数的位数的个数,这个完全平方数应该有4n位数*)
Do[out=Reduce[x^2==a*10^(3*n)+b*10^(2*n)+a*b
&&(b>0&&b<10^n) (*b大于零,且b的位不超过n+1*)
&&(x>0&&x<10^(2*n)) (*x大于零,且x的位小于2n+1*)
&&a*b>=10^(2*n-1),(*乘积应该是2n位数*)
{x,b},Integers];
If[out===False,(*如果输出结果是False,注意是===,而不是==*)
,(*不输出任何结果*)
(*输出符合要求的结果*)
(*在Reduce函数中x\b是变量,所以此处赋值的话会影响上面的Reduce函数的求值*)
{x0,b0}={x,b}/.ToRules@out;
a0=a;
Print@{x0,a0,b0,a0*b0,x0^2}
],
{a,10^(n-1),10^n-1}](*第一个乘数的可能的范围*)
求解结果!!!!!!!!
{6000043200,36000,51840,1866240000,36000518401866240000}
{7000068600,49000,96040,4705960000,49000960404705960000}
{7905745000,62500,80400,5025000000,62500804005025000000}
{8286653230,68668,62175,4269432900,68668621754269432900} 我高中时也发现过这个问题 2# gxqcn
假如最小的那部分位数是r,他给的例子里r=1.
先化成x^2+10^5r=(10^3r+y)(10^2r+z).
然后解同余式x^2+10^5r=0(mod 10^3r+y),其中y是r位数,x是2r位数。
得出有解的y,然后得到相应的x,再实验x是否满足要求。
lsrong314 发表于 2012-2-14 15:27 http://bbs.emath.ac.cn/images/common/back.gif
说实话,你的思路我不怎么明白!能说得更清楚一些吗?? 我的回答还是不错的! 有收藏夹吗?我想收藏这个帖子! 16# mathematica
谢谢。不过你的答案一个都不符合要求,最后问的是求一个不能被10整除的数,你求的全部都是我开始说的容易的那一类。5楼虽然不是10的倍数,但是不满足条件(4) 17# lsrong314
只能说不符合你的要求!!!!!!!!!!!!!!
我没说答案要符合你的要求! 18# mathematica
那随你了,这是你的自由,只不过你没有回答我的问题而已 满足你要求的应该很难再找到了,你说呢
页:
1
[2]