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

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

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
12下一頁(yè)
最近訪問(wèn)板塊 發(fā)新帖
查看: 5419 | 回復(fù): 10
打印 上一主題 下一主題

[原創(chuàng)] 靜態(tài)質(zhì)數(shù)表生成函數(shù) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2008-09-22 19:10 |只看該作者 |倒序?yàn)g覽
判斷一個(gè)數(shù)是否是質(zhì)數(shù),經(jīng)過(guò)實(shí)驗(yàn),即使在2千萬(wàn)的范圍內(nèi),還是查表的速度更快,占用內(nèi)存也不多,即使2千萬(wàn)的位序列也不過(guò)占2M左右的內(nèi)存。

寫(xiě)了一個(gè)程序,自動(dòng)生成一個(gè)靜態(tài)表函數(shù)。


  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <limits.h>
  4. #include <math.h>

  5. int main(int argc, char** argv)
  6. {
  7.   int total=2000;
  8.   int cols=6;
  9.   int myjs=1;
  10.   
  11.   if(argc>2)
  12.   {
  13.      fprintf(stderr,"Usage:%s total\n",argv[0]);
  14.      return -1;
  15.   }
  16.   else if(argc==2)
  17.      total=(int)strtol(argv[1],NULL,10);
  18.   

  19.   int js=3;
  20.   int i;
  21.   int t;

  22.   printf("int myadjust(int shu)\n\
  23. {\n\
  24.     assert(shu<=%d);\n\
  25.     const static unsigned int mytable[]={\n\
  26.             ",total);

  27.   unsigned int output=0x60000000;

  28.   for(t=3;t<=total;t++)
  29.   {
  30.     int k=(int)(sqrt(t));
  31.     if(t%2==0)
  32.       i=0;
  33.     else
  34.       for(i=3;i<=k;i+=2)
  35.        if(t%i==0)
  36.           break;
  37.     if(i>k)
  38.       output|=(0x80000000 >> (js & 0x1F));
  39.    
  40.     if((js & 0x1F) == 31)
  41.     {
  42.       printf("0x%X,",output);
  43.       output=0;
  44.       if(myjs++ % cols ==0)
  45.         printf("\n\
  46.             ");
  47.     }
  48.    
  49.     js++;
  50.   }

  51.   if((--js & 0x1F) != 31)
  52.     printf("0x%X\n",output);  

  53.   printf("    };\n\n    return (mytable[shu >> 5] & ((unsigned int)0x80000000 >> (shu & 0x1F)));\n}\n");

  54.   return 0;
  55. }

復(fù)制代碼



比如生成的0-2000范圍內(nèi)的質(zhì)數(shù)表函數(shù)(內(nèi)置位序列,0為false,非0為true,判斷質(zhì)數(shù)):


  1. int myadjust(int shu)
  2. {
  3.     assert(shu<=2000);
  4.     const static unsigned int mytable[]={
  5.             0x75145105,0x4510414,0x11411040,0x45144001,0x10500504,0x11041401,
  6.             0x45001001,0x14414010,0x41050450,0x4001144,0x104014,0x41010411,
  7.             0x4044040,0x14014110,0x40451001,0x1101104,0x500004,0x10041050,
  8.             0x40104141,0x4500100,0x51041400,0x44101004,0x4010104,0x11010440,
  9.             0x44001004,0x500514,0x1000451,0x45100,0x110100,0x40441040,
  10.             0x1104101,0x4004414,0x1410050,0x5040001,0x14410404,0x10400001,
  11.             0x40101004,0x10404004,0x41050400,0x40100005,0x10504510,0x1410000,
  12.             0x4104,0x4000100,0x40011441,0x1141001,0x514410,0x1001010,
  13.             0x1044101,0x10110004,0x41441410,0x4000041,0x14000004,0x50040050,
  14.             0x4041041,0x4114,0x401001,0x1000100,0x4114500,0x40041040,
  15.             0x140005,0x410,0x10450000
  16.     };

  17.     return (mytable[shu >> 5] & ((unsigned int)0x80000000 >> (shu & 0x1F)));
  18. }


復(fù)制代碼

[ 本帖最后由 haoji 于 2008-9-22 19:12 編輯 ]

論壇徽章:
36
IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-10 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-16 06:20:0015-16賽季CBA聯(lián)賽之廣東
日期:2016-04-16 19:59:32IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-18 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-19 06:20:00每日論壇發(fā)貼之星
日期:2016-04-19 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-25 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-06 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-08 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-13 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-28 06:20:00每日論壇發(fā)貼之星
日期:2016-05-28 06:20:00
2 [報(bào)告]
發(fā)表于 2008-09-22 19:29 |只看該作者
好東西,有時(shí)間測(cè)試一下。
BTW,代碼里怎么那么多\n啊

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2008-09-22 19:51 |只看該作者
原帖由 Godbach 于 2008-9-22 19:29 發(fā)表
好東西,有時(shí)間測(cè)試一下。
BTW,代碼里怎么那么多\n啊


為了美觀,

謝謝鼓勵(lì)

論壇徽章:
36
IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-10 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-16 06:20:0015-16賽季CBA聯(lián)賽之廣東
日期:2016-04-16 19:59:32IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-18 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-19 06:20:00每日論壇發(fā)貼之星
日期:2016-04-19 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-25 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-06 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-08 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-13 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-28 06:20:00每日論壇發(fā)貼之星
日期:2016-05-28 06:20:00
4 [報(bào)告]
發(fā)表于 2008-09-22 20:07 |只看該作者
呵呵,都是包含在printf里面。

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2008-09-22 20:12 |只看該作者

回復(fù) #1 haoji 的帖子

恩,不錯(cuò),我來(lái)學(xué)習(xí)一下哦,呵呵呵

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2008-09-23 09:44 |只看該作者
費(fèi)勁啊,為什么不用 bitset

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2008-09-23 12:12 |只看該作者
什么跟什么呀。看不出快在那里?

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2008-09-23 16:35 |只看該作者
原帖由 redspider 于 2008-9-23 09:44 發(fā)表
費(fèi)勁啊,為什么不用 bitset


費(fèi)勁嗎?一行語(yǔ)句還費(fèi)勁?

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2008-09-23 16:36 |只看該作者
原帖由 RobinHoo 于 2008-9-23 12:12 發(fā)表
什么跟什么呀?床怀隹煸谀抢铮


沒(méi)實(shí)驗(yàn)過(guò)就別亂說(shuō)

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2008-09-23 17:00 |只看該作者
老大,能否注釋下,照顧下我們
您需要登錄后才可以回帖 登錄 | 注冊(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)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP