你是想查一張表里面 某個字段 奇數(shù)的合 和 偶數(shù)的合 是這意思嗎?
創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站設(shè)計、成都做網(wǎng)站與策劃設(shè)計,永吉網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:永吉等地區(qū)。永吉做網(wǎng)站價格咨詢:18982081108
比如有個表大概這樣:
成績
91
88
86
96
89
你是想分別查詢 91 + 89 和 88+86+96 的合是嗎?
首先第一句話:雖然我不知到這兩個數(shù)是什麼,但我知道你一定也不知道。 從這句話說明孫手里拿到的兩個數(shù)肯定都不是素數(shù)(什么是素數(shù)?就是除了1和它本身以外不再有其他因數(shù)的自然數(shù)),不然的話,孫通過知道龐的和就可以唯一判斷出這兩個數(shù)字了
推理一:比如A=a+b,B=a*b;B=15,A=8,那么很容易就猜想到了a=3,b=5 (因為對15進(jìn)行拆分只有一種可能),所以對龐的第一句話產(chǎn)生了矛盾;那么a,b兩個數(shù)可能是一個奇數(shù),一個偶數(shù);另外有位大神認(rèn)為任意大于4的偶數(shù)都能被拆成兩個奇質(zhì)數(shù)之和,但由于兩個質(zhì)數(shù)都要小于99,所以龐手上的數(shù)可能為偶數(shù),但這個偶數(shù)會接近200(有182,184,188,190,192,196和198),除此之外,只可能是奇數(shù);舉例:如果龐涓手上是28,可以拆成11+17,當(dāng)孫臏拿到了187這個積,馬上就可以猜出鬼谷子給他的兩個數(shù)是11和17,與龐涓肯定孫臏不知道這兩個數(shù)相矛盾,因此有可能拆成兩個2-99的質(zhì)數(shù)和的數(shù)都要排除因此有可能拆成兩個2-99的質(zhì)數(shù)和的數(shù)都要排除
推理二:龐的和數(shù)一定不是大于55的數(shù)。因為大于53的數(shù)始終能夠拆成質(zhì)數(shù)53和另一個大于2的數(shù),在2-99的限制下,這兩個數(shù)的乘積只有這唯一一種拆分方法。舉例:如果龐手上的和數(shù)是57,可以拆成53+4,當(dāng)孫臏拿到212這個積,只有4*53這一種拆分可能性,因為2*106的另一種拆分方法導(dǎo)致有一個數(shù)超過99。由此排除55以上的所有所有數(shù)因此最后滿足以上條件的這樣的數(shù)字僅有11個:11,17,23,27,29,35,37,41,47,51,53。
第二句話:本來我不知道,現(xiàn)在知道了;這說明孫看了自己手上的積后,分解因式對應(yīng)的所有拆分情況中有且僅有一種,兩個因數(shù)的和是以上11個數(shù)中的一個。
第三句話:那我也知道了;由于龐涓并不知道兩數(shù)積,所以只能從以上表格出發(fā)確定,最后得到兩個數(shù)字分別是4和13
也許上面的解析并不通俗易懂,其中涉及到很多數(shù)學(xué)知識和推理能力,如果感興趣可以基于上述講解自行進(jìn)行推導(dǎo);其實這道題的本質(zhì)是基于每次的問題進(jìn)行排除,盡可能的縮小范圍,最后得到結(jié)果;那么最后通過SQL的方式來解決這類問題,或許通過sql(基于HQL)的方式可以幫助讀者更加清晰理解
oracle中用mod
如:
select?mod(4,2)?from?dual;?--?結(jié)果為0是偶數(shù)
select?mod(3,2)?from?dual;?--?結(jié)果為1是奇數(shù)
sqlserver直接用%
如:
select?4%2?--?結(jié)果為0是偶數(shù)
select?3%2?--?結(jié)果為1是奇數(shù)
mysql同oracle
如:
select?mod(4,2)?--?結(jié)果為0是偶數(shù)
select?mod(3,2)?--?結(jié)果為1是奇數(shù)
sqlserver 2000:
SELECT SUM(rn) AS Expr1
FROM (SELECT (SELECT COUNT(*)
FROM sysobjects
WHERE id a.id) AS rn
FROM sysobjects a) b
WHERE (rn = 100) AND (rn % 2 0)
結(jié)果是2500.