鬼谷子先生有两个绝顶聪明的门徒,一个叫孙宾(后来改名孙膑),一个叫庞涓。
有一天鬼谷子对他们说:“两个大于1而小于100的自然数相加=X,相乘=Y。谁能猜出我说的这两个自然数是多少?”
庞涓说:“条件太少了。X,Y都不知道,我没有办法算。”
“好,你附耳过来。”鬼谷子悄悄地告诉庞涓X是多少。然后又悄悄地告诉孙宾Y是多少。
“现在你们分别知道X,Y,谁能说出答案?”
庞涓想了一会,得意地说:“虽然我不知道答案是哪两个自然数,但是我知道孙宾也不知道这两个数是多少!”
孙宾淡淡一笑:“听你一说,现在我倒知道这两个数是多少了。”
庞涓大吃一惊:“慢,你先别说答案。”他又想了一会说:“师傅,我也知道这两个数是多少了。”
你知道这两个自然数是多少吗??
=========================================================================
怎么找出这两个数啊?不知道从哪儿开始,要求编程求出,其实要求是最好用SQL写出,SQL可以得满分,其他方式编程可以及格,搞不完就不能回家过年了,大家帮帮我啊,谢谢谢谢了
有一天鬼谷子对他们说:“两个大于1而小于100的自然数相加=X,相乘=Y。谁能猜出我说的这两个自然数是多少?”
庞涓说:“条件太少了。X,Y都不知道,我没有办法算。”
“好,你附耳过来。”鬼谷子悄悄地告诉庞涓X是多少。然后又悄悄地告诉孙宾Y是多少。
“现在你们分别知道X,Y,谁能说出答案?”
庞涓想了一会,得意地说:“虽然我不知道答案是哪两个自然数,但是我知道孙宾也不知道这两个数是多少!”
孙宾淡淡一笑:“听你一说,现在我倒知道这两个数是多少了。”
庞涓大吃一惊:“慢,你先别说答案。”他又想了一会说:“师傅,我也知道这两个数是多少了。”
你知道这两个自然数是多少吗??
=========================================================================
怎么找出这两个数啊?不知道从哪儿开始,要求编程求出,其实要求是最好用SQL写出,SQL可以得满分,其他方式编程可以及格,搞不完就不能回家过年了,大家帮帮我啊,谢谢谢谢了
a*b=y
x+y=(a+b)+(a*b)设:x=y
a+b=a*ba=a*(b-1)
b-1=1
b=2a+2=a*2
a+2=a+a
a=2结果
a=2,b=2
有张三和李四两个人,还有一个考官。
考官说我这里有两个数字,这两个数字的范围在2到100之间。
然后他告诉我张三这两个数字的和,告诉了李四这两个数字的乘积。
让张三和李四说出这两个数字分别是多少。
张三看了看“和”,说“你肯定不知道这两个数字是多少。”
李四听了这话,想了想,说,“那么,我现在知道这两个数字是多少了。”
张三听了李四的话,也说:“那我也知道是多少了”。
朋友们,你们知道是多少了吗?
是怎么知道的呢?
推理过程:
“张三看了看“和”,说“你肯定不知道这两个数字是多少。””
李四不知道这两个数字是多少,说明这两个数字不可能都是质数,否则将这两个数字的
积(
设为A)分解质因数既可还原。
同样A不可能有大于50的质因数,否则A只有一种拆分方法(其他拆分方法必有大于100的
因
数)。
既然张三可以肯定李四不知道这两个数字,说明这两个数的和(设为B)不可能分解为两
个
质数的和。因为任何大于4的偶数都可以分解为两个质数之和(哥德巴赫猜想),所以,
这
B必为奇数,也就是说这两个数是一奇一偶。
同样B不可能等于“质数+2”
另:B不可能大于54。因为任何大于54的数都可以拆分成53+X的形式,而53和任意自然数
的
积一定有质因数53,与上述分析矛盾。
这样两数之和B的范围大大缩小。
那么这两个数的和B只可能等于:
11 17 23 27 29 35 37 41 47
中的一个。
"李四听了这话,想了想,说,“那么,我现在知道这两个数字是多少了。”"
看看各种可能的B的各种拆分方式所得到的积:
11(2*9=18、3*8=24、4*7=28、5*6=30)
17(2*15=30、3*14=42、4*13=52、5*12=60、6*11=66、7*10=70、8*9=72)
23(2*21=42、……)
……
47(……)
可以看出,30、42等作为积出现了不止一次,所以两数之积A不可能是30、42等。
我们把这样的数从上表中划去,剩下的数就是可能的积,而对应的拆分方法我们称之为
可能
拆分。
这个工作量比较大,先不忙划,继续往下分析。
“ 张三听了李四的话,也说:“那我也知道是多少了”。”
这句话说明,最终的B值只包含一种可能拆分。
好,我们再看。
11可拆分为4+7和8+3,均为可能拆分。(因为28和24均不可能有其它的奇数*偶数的表示
形
式了)。
23可拆分为4+19和16+7,均为可能拆分。(因为68和112均不可能有其它的奇数*偶数的
表示
形式了)。
27可拆分为4+23和8+19。
35可拆分为4+31,16+19和32+3。
37可拆分为8+29和32+5。
47可拆分为4+43和16+31。
另:
29可拆分为6+23和16+13均为可能拆分
41可拆分为4+37和10+31,均为可能拆分。(请读者自己验证)
好了,现在只剩下17。
拆拆看:
17(2*15=30、3*14=42、4*13=52、5*12=60、6*11=66、7*10=70、8*9=72)
不难验证,其中30、42、60、66、70、72均不是可能的A值,只有4*13一种拆分方法。
所以答案:
4和13!
附本题的另一个版本:
鬼谷子先生有两个绝顶聪明的门徒,一个叫孙宾(后来改名孙膑),一个叫庞涓。
有一天鬼谷子对他们说:“两个大于1而小于100的自然数相加=X,相乘=Y。谁能猜出我说的这两个自然数是多少?”
庞涓说:“条件太少了。X,Y都不知道,我没有办法算。”
“好,你附耳过来。”鬼谷 忧那牡 告诉庞涓X是多少。然后又悄悄地告诉孙宾Y是多少。
“现在你们分别知道X,Y,谁能说出答案?”
庞涓想了一会,得意地说:“虽然我不知道答案是哪两个自然数,但是我知道孙宾也不知道这两个数是多少!”
孙宾淡淡一笑:“听你一说,现在我倒知道这两个数是多少了。”
庞涓大吃一惊:“慢,你先别说答案。”他又想了一会说:“师傅,我也知道这两个数是多少了。”
你知道这两个自然数是多少吗???
同样 Y 不可能有大于50的质因数,否则 Y 只有一种拆分方法(其他拆分方法必有大于100的因数)。
既然庞涓可以肯定孙宾不知道这两个数字,说明 X 不可能分解为两个质数的和。因为任何大于4的偶数都可以分解为两个质数之和(哥德巴赫猜想),所以,这 X 必为奇数,也就是说这两个数是一奇一偶。
同样 X 不可能等于“质数+2”
另:X 不可能大于54。因为任何大于54的数都可以拆分成 53+M 的形式,而53和任意自然数的积一定有质因数53,与上述分析矛盾。
那么 X 只可能等于:11 17 23 27 29 35 37 41 47 中的一个。 孙宾听了之后说知道这两个数了,各种可能的 Y 的各种拆分方式所得到的积:
11(2*9=18、3*8=24、4*7=28、5*6=30)
17(2*15=30、3*14=42、4*13=52、5*12=60、6*11=66、7*10=70、8*9=72)
23(2*21=42、……)
……
47(……)
可以看出,30、42等作为积出现了不止一次,所以两数之积 Y 不可能是30、42等。
我们把这样的数从上表中划去,剩下的数就是可能的积,而对应的拆分方法我们称之为可能拆分。
“ 庞涓听了孙宾的话,也说:“那我也知道是多少了”。”
这句话说明,最终的 X 值只包含一种可能拆分。
11可拆分为4+7和8+3,均为可能拆分。(因为28和24均不可能有其它的奇数*偶数的表示形式了)。
23可拆分为4+19和16+7,均为可能拆分。(因为68和112均不可能有其它的奇数*偶数的表示形式了)。
27可拆分为4+23和8+19。
35可拆分为4+31,16+19和32+3。
37可拆分为8+29和32+5。
47可拆分为4+43和16+31。
另:
29可拆分为6+23和16+13均为可能拆分
41可拆分为4+37和10+31,均为可能拆分。
好了,现在只剩下17。
拆拆看:
17(2*15=30、3*14=42、4*13=52、5*12=60、6*11=66、7*10=70、8*9=72)
不难验证,其中30、42、60、66、70、72均不是可能的 Y 值,只有4*13一种拆分方法。
所以答案: 4和13
--建立需要的表
create table a (
id int identity(1,1) not null,
i int null,
j int null,
he int null,
ji int null
)
gocreate table b (
id int null,
i int null,
j int null,
he int null,
ji int null
)
gocreate table ji (
ji int null,
cou int null
)
gocreate table he (
he int null,
cou int null
)
go--插入从2到100的所有数资料到表a
declare @i int
declare @j int
set @i=2
while @i<100 begin
set @j=@i+1
while @j<100 begin
insert into a(i,j,he,ji) values(@i,@j,@i+@j,@i*@j)
set @j=@j+1
end
set @i=@i+1
end
go--统计所有出现的积的出现次数放入表ji
insert into ji
select ji,count(ji) as cou from a
group by ji
go--查看符合条件的和 --这一步可以不执行
--select distinct(he) from a where he not in (
-- select he from a where ji in (
-- select ji from ji where cou=1))
--go
--结果: 11 17 23 27 29 35 37 41 47 53--查找到所有和为上面结果的行写入表b中
insert into b
select * from a where he in(
select distinct(he) from a where he not in (
select he from a where ji in (
select ji from ji where cou=1)))
go--删除表ji中所有数据
delete from ji--将符合条件的积的出现次数写入表ji
insert into ji
select ji,count(ji) as cou from a where he in (select distinct(he) from b)
group by ji order by cou
go--将符合条件的和的出现次数写入表he
insert into he
select he,count(he) as cou from b where ji in (select ji from ji where cou=1)
group by he
go--查询到最后结果
select i as '第一个数',j as '第二个数',he as '和',ji as '积' from b where
he in(select he from he where cou=1) and
ji in (select ji from ji where cou=1)
go--清理用过的表
drop table a
drop table b
drop table he
drop table ji
a+b=x
a*b=y
x+y=(a+b)+(a*b)设:x=y‘为什么x=y呢?
a+b=a*ba=a*(b-1)
b-1=1
b=2a+2=a*2
a+2=a+a
a=2结果
a=2,b=2