有谁可以用四行代码求出1000000的阶乘!!!

freeclick 2000-12-26 11:56:00
见到有位仁兄用四行代码求pi精确到小数点后800位(被号称为外星人程序)。
不知道有谁可以用四行代码求出1000000的阶乘。全部分送上。
...全文
2862 57 打赏 收藏 转发到动态 举报
写回复
用AI写文章
57 条回复
切换为时间正序
请发表友善的回复…
发表回复
freeclick 2001-01-04
  • 打赏
  • 举报
回复
to : liangbch
怎么样,够意思吧。哈哈。。。可不可以把哪段最优秀的代码发给我。 free_click@263.net
Kevin_qing 2001-01-03
  • 打赏
  • 举报
回复
哈哈哈哈哈哈哈哈~~~
王集鹄 2001-01-01
  • 打赏
  • 举报
回复
function f(n: Real): Real;
begin
if n = 0 then Result := 1 else Result := f(n - 1);
end;
liangbch 2001-01-01
  • 打赏
  • 举报
回复
大家看好了,我真正实现了用4行代码计算10000的阶乘,这是一个代码简洁,速度很快的算法,但不是最快的,目前我最快的算法比这个程序快10倍,代码如下:
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int main(int argc, char* argv[])
{
unsigned int i,cy,n=10000,c_l=1,*px,*c_p=new unsigned int[4000];
for (*c_p=1,i=1;i<n+1;i++)
{
for (px=c_p+c_l-1,cy=0;px>=c_p;px--)
{__int64 ji=(__int64)(*px)*(__int64)i+(__int64)cy; cy=(int)(ji/1000000000); *px=(int)(ji%1000000000); }
if (cy>0 ) { c_l++; memmove( (void *)(c_p+1),(void *)(c_p),(c_l)*sizeof(int) ); *c_p=cy; }
}
for (i=1;i<=c_l;i++) printf("%09d",*(c_p+i-1));
getchar();
return 0;
}
------------------------
该程序用vc++6.0调试通过
liangbch 2001-01-01
  • 打赏
  • 举报
回复
对不起,忘了告诉大家我的网址了,我的网址是:http://liangbaocheng.yeah.net
我早在10月就在我的超级计算器中实现了大数的阶乘,计算10万的阶乘比windows 98快7500倍。自以为计算速度居全国之最。如果有感兴趣者可到网页上看看,如有感兴趣者请发email 给我,我现在没工夫。
liangbch 2001-01-01
  • 打赏
  • 举报
回复
我早在10月就在我的超级计算器中实现了大数的阶乘,计算10万的阶乘比windows 98快7500倍。自以为计算速度居全国之最。如果有感兴趣者可到网页上看看,如有需要源程者告诉我,我现在没功夫。
eyeblue 2000-12-31
  • 打赏
  • 举报
回复
提出批评的我看是走入误区了
其实这是通过C用最少的代码完成一个程序,本身就是用来玩的,不是用来做项目的,有如下棋和游戏,虽然本身没有太大价值,但用来挑战和磨练自己的头脑还是挺好的,写出一个也比较有成就感。
没记错的话这来源于有一年的软件大会,C语言的创造者展示了一个用一行代码写的繁殖程序,从那以后每次大会上都有人展示这样的趣味程序。
adrianx 2000-12-30
  • 打赏
  • 举报
回复
10000!用计算器WIN2k,C333,128MB算了5秒
想想吧用浮点运算100000!都要约4.3天10000000!是地球和太阳银河系都没法比的年龄,谁来等这个结果呢?
NowCan 2000-12-30
  • 打赏
  • 举报
回复
这可能连Mathematica也算不出来。呵呵。
RedHook 2000-12-30
  • 打赏
  • 举报
回复
另外要说的就是如果能看见用自然语言实现的精炼代码就好了。
RedHook 2000-12-30
  • 打赏
  • 举报
回复
to xiner
比较幽默。我觉得应该算法的代码长度应该有一些基本规则。如果大家可以利用C的for循环特殊语法结构,将n行合成一行,有点犯规嫌疑,又或则利用函数功能将代码简化,也不大合适。
我个人认为应该只允许+,-, *,/及程序结构代码if ,for,while 等,至于printf语句
我认为大可不必像 cqjiang 那样极端,是可以用的,毕竟它只是用于输出。见笑!
shanmao 2000-12-30
  • 打赏
  • 举报
回复
这种分析太有价值了
Dosn 2000-12-29
  • 打赏
  • 举报
回复
厉害!!!小弟特佩服!!
wooingcn 2000-12-29
  • 打赏
  • 举报
回复
看我的:
main(){printf("1000000000000!\n");}
结果绝对正确.而且我只用了一行.
xfyxq 2000-12-29
  • 打赏
  • 举报
回复
你们真可爱!!!!
mutant 2000-12-29
  • 打赏
  • 举报
回复
哎,果然在不同的编译环境下得到的结果不一样
freeclick 2000-12-29
  • 打赏
  • 举报
回复
to chenf
难道是因为操作系统的缘故?我的机器是pII芯片,ntOS。
运算结果是:27!=888869450418352160768000000 。
js123 2000-12-29
  • 打赏
  • 举报
回复
to freeclick

老兄,这个数字要500G的硬盘才能放的下。
taolei 2000-12-29
  • 打赏
  • 举报
回复
to:rampig
这里的人都是靠写程序混饭吃的,平常做项目的时候该怎么做谁都知道,不过还是要谢谢你给大家的提醒。

这个程序本身并非是什么项目工程或是其中一部分,它也并非是要解决什么问题。作者写这段程序追求的就是编程技巧,这也是这个程序的价值所在,我们要学习的也是这些东西。你的那些评价并不适合这个程序。

The_east_key 2000-12-29
  • 打赏
  • 举报
回复
建议您访问www.etechbase.net/tech,里面有很多资料,也许可以解决您的问题。
访问http://168.168.18.11:81/etechbase/advsearch.php将您的问题输入查询内容框,选择不同的精确程度,即可以找到你所需要的答案。效果还是可以的。
加载更多回复(37)

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧