- 注册时间
- 2010-7-23
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 851
- 在线时间
- 小时
|
楼主 |
发表于 2010-8-9 11:15:00
|
显示全部楼层
又在FcHugeCalc中加了一个缓冲区,运行以下代码,C++已比Forcal慢了,当然这可能是比较特殊的情况吧。- !using["HugeCalc"];
- mvar:
- t0=sys::clock();
- i: printff["\r\n"],
- a=NewHC[HI].SetNum[10000000].free[],
- b=NewHC[HI].SetNum[20000000].free[],
- c=NewHC[HI].SetNum[0].free[],
- aa=NewHC[HI].free[],
- i=0, a.NextPrime[a], aa.NextPrime[a],
- while{LE(aa,b),
- oo{
- dd=a*aa, cc=Pow(aa,50),
- c.Set[c+Pow(a,100)*(a+aa)*(a*aa%(a+b))+(c+cc)/dd]
- },
- a.Set[aa], aa.NextPrime[a],
- i++
- },
- c.Show(),
- i;
- [sys::clock()-t0]/1000;
- //以下root函数中的C++代码以运算符重载的方式执行与上面相同的计算
- t0=sys::clock();
- i: printff["\r\n"], HugeCalc::NewHC[HI].Root(10000000,20000000).Show().free[];
- [sys::clock()-t0]/1000;
复制代码 结果(去掉了一些无用的输出,添加了些注释):
118 665 309 304 833 785 345 563 386 324 648 547 035 425 038 181 578 220 747 682 524 511 062 461 093 647 452 509 972 200 155 644 319 793 492 290 959 190 989 248 040 819 643 043 365 337 914 648 956 443 540 250 313 176 180 479 801 437 839 936 533 996 316 340 239 213 527 641 718 206 798 942 547 135 174 392 619 526 762 202 809 933 722 161 432 981 246 861 507 662 608 839 089 941 376 556 367 810 280 300 360 243 722 730 232 063 290 238 146 939 767 028 313 016 072 960 038 404 229 118 819 825 747 244 356 878 312 530 448 163 689 704 203 194 296 789 853 787 954 727 493 976 733 762 078 122 199 193 818 658 219 552 717 804 563 143 393 685 352 728 907 572 003 138 319 623 877 967 200 005 822 861 587 965 707 457 753 488 360 307 036 940 266 934 602 297 449 993 339 542 136 539 259 760 878 719 170 329 500 691 767 171 086 114 357 803 297 061 434 015 155 462 723 617 832 105 664 188 393 652 214 125 581 343 926 076 035 248 699 681 537 862 798 185 719 304 702 821 373 652 044 161 974 149 965 460 153 175 315 934
76.937 //Forcal结果,耗时76.937秒
118 665 309 304 833 785 345 563 386 324 648 547 035 425 038 181 578 220 747 682 524 511 062 461 093 647 452 509 972 200 155 644 319 793 492 290 959 190 989 248 040 819 643 043 365 337 914 648 956 443 540 250 313 176 180 479 801 437 839 936 533 996 316 340 239 213 527 641 718 206 798 942 547 135 174 392 619 526 762 202 809 933 722 161 432 981 246 861 507 662 608 839 089 941 376 556 367 810 280 300 360 243 722 730 232 063 290 238 146 939 767 028 313 016 072 960 038 404 229 118 819 825 747 244 356 878 312 530 448 163 689 704 203 194 296 789 853 787 954 727 493 976 733 762 078 122 199 193 818 658 219 552 717 804 563 143 393 685 352 728 907 572 003 138 319 623 877 967 200 005 822 861 587 965 707 457 753 488 360 307 036 940 266 934 602 297 449 993 339 542 136 539 259 760 878 719 170 329 500 691 767 171 086 114 357 803 297 061 434 015 155 462 723 617 832 105 664 188 393 652 214 125 581 343 926 076 035 248 699 681 537 862 798 185 719 304 702 821 373 652 044 161 974 149 965 460 153 175 315 934
79.359 //C++结果,耗时79.359秒 |
|