亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問板塊 發(fā)新帖
查看: 10597 | 回復(fù): 2
打印 上一主題 下一主題

[算法] 發(fā)個(gè)對(duì)整數(shù)開根號(hào)的算法 [復(fù)制鏈接]

論壇徽章:
1
榮譽(yù)會(huì)員
日期:2011-11-23 16:44:17
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2012-11-29 11:58 |只看該作者 |倒序?yàn)g覽
  1. uint8_t ary[256] = {
  2.   0, 16, 16, 16, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 64, 64, 68, 68, 72, 72, 76, 76, 76, 80, 80, 84, 84, 84, 88, 88,
  3. 88, 92, 92, 92, 96, 96, 96,100,100,100,104,104,104,108,108,108,108,112,112,112,116,116,116,116,120,120,120,120,124,124,124,124,
  4. 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,143,144,145,146,147,148,149,150,150,151,152,153,154,155,155,156,
  5. 157,158,159,159,160,161,162,163,163,164,165,166,167,167,168,169,170,170,171,172,173,173,174,175,175,176,177,178,178,179,180,181,
  6. 181,182,183,183,184,185,185,186,187,187,188,189,189,190,191,191,192,193,193,194,195,195,196,197,197,198,199,199,200,201,201,202,
  7. 203,203,204,204,205,206,206,207,207,208,209,209,210,211,211,212,212,213,214,214,215,215,216,217,217,218,218,219,219,220,221,221,
  8. 222,222,223,223,224,225,225,226,226,227,227,228,229,229,230,230,231,231,232,232,233,234,234,235,235,236,236,237,237,238,238,239,
  9. 239,240,241,241,242,242,243,243,244,244,245,245,246,246,247,247,248,248,249,249,250,250,251,251,252,252,253,253,254,254,255,255
  10. };  
  11. unsigned int my_sqrt(unsigned int a)
  12. {
  13.     unsigned int b;

  14.     if (a < 256) return (ary[a]) >> 4;
  15.     else if (a < (1 << 12)) b = ary[a >> 4] >> 2;
  16.     else if (a < (1 << 14)) b = ary[a >> 6] >> 1;
  17.     else if (a < (1 << 16)) b = ary[a >> 8]   ;
  18.     else if (a > 4294836225u) return 65535;
  19.     else
  20.     {
  21.         int s = (31 - __builtin_clz((a >> 16)|1)) >> 1;
  22.         unsigned int c = a >> (s + 2);
  23.         b = ary[c >> (s + 8)]; // b=sqrt(c >> s)
  24.         b = c/b + (b << s); //插值 c/b約=b<<s
  25.     }
  26.     return b - (a < b * b);
  27. }
復(fù)制代碼
這個(gè)數(shù)組可以這樣得到:
  1. int main()
  2. {
  3.     uint8_t ary[256];
  4.     int i = 0, j;
  5.     memset(ary, 0, sizeof(ary));
  6.     for(i = 0; i < 1 << 8; i++) ary[i] = 16*((int)sqrt(i));
  7.     for(; i < 1 << 12; i++) ary[i/16] = 4*((int)sqrt(i));
  8.     for(; i < 1 << 14; i++) ary[i/64] = 2*((int)sqrt(i));
  9.     for(; i < 1 << 16; i++) ary[i/256] = (int)sqrt(i);
  10.     for(i = 0; i < 255; i++)
  11.     {
  12.         printf("%3d,", ary[i]);
  13.         if(i % 32 == 31)
  14.             printf("\n");
  15.     }
  16.     printf("%3d\n", ary[i]);
  17. }
復(fù)制代碼

評(píng)分

參與人數(shù) 1可用積分 +6 收起 理由
JohnBull + 6 實(shí)用!

查看全部評(píng)分

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2012-11-29 14:02 |只看該作者
很好,用了,謝謝。

論壇徽章:
3
15-16賽季CBA聯(lián)賽之山東
日期:2016-10-30 08:47:3015-16賽季CBA聯(lián)賽之佛山
日期:2016-12-17 00:06:31CU十四周年紀(jì)念徽章
日期:2017-12-03 01:04:02
3 [報(bào)告]
發(fā)表于 2012-11-29 18:06 |只看該作者

好的, 先mark
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP