對于整型,其二進(jìn)制值最低位要么是0要么是1
創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比莎車網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式莎車網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋莎車地區(qū)。費用合理售后完善,十余年實體公司更值得信賴。
是0就是偶數(shù),是1就是奇數(shù)
而一個整數(shù)與0x01,除最低位外,其他位都置0
所以這個操作是取最低位值的
最低位為1,結(jié)果為真,代表奇數(shù)
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ù)
首先第一句話:雖然我不知到這兩個數(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)的方式可以幫助讀者更加清晰理解