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

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

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 7049 | 回復(fù): 15
打印 上一主題 下一主題

關(guān)于求質(zhì)數(shù)的dc程序翻譯  關(guān)閉 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2004-04-30 11:06 |只看該作者 |倒序?yàn)g覽
上次有位哥們發(fā)了個dc程序,是求質(zhì)數(shù)的,分析了一下,現(xiàn)轉(zhuǎn)換成C程序放在下面:
原dc程序:
echo '2p3p[dl!d2+s!%0=@l!l^!<#]s#[s/0ds^]s@[p]s&[ddvs^3s!l#x0<&2+l.x]ds.x'|dc

該程序使用的算法我不討論了,翻譯的c程序如下:
#include <stdio.h>
#include <math.h>

int stack[100];
int sflag=0;

int a;        /*^*/
int b;        /*!*/

void check_doing(void); /*#*/
void check_do2(void);   /*@*/
void check_prime(void); /*.*/
void xadd(void);
void xmod(void);
int  get(void);
int pop(void);
void push(int);
void dupli(void);
void xprint(void);    /*&*/

int get(void)
{
        return stack[sflag];
}

int pop(void)
{
        if(sflag<0) return -1000;

        sflag--;       
        return stack[sflag+1];
}

void push(int i)
{
        sflag++;
        stack[sflag]=i;
}

void dupli(void)
{
        push(stack[sflag]);
}

void xprint(void)
{
        printf("%d\n",stack[sflag]);       
}

void check_prime(void)
{

/*now begin the main */
        dupli();
        dupli();
        a=sqrt(pop());

        b=3;
       
        check_doing();
/*end the main*/
       
        if(pop()>0) xprint();

        push(2+pop());

        if(get()>50) return;
       
        check_prime();       
}

void check_doing(void)
{
        int c;

        dupli();
        push(b);
        dupli();
        push(2);
        xadd();
       
        b=pop();
        xmod();

        if(pop()==0) check_do2();
       
        if(!(a<b)) check_doing();
        else return;
}

void check_do2(void)
{
        pop();
        push(0);
        a=0;
}

void xadd(void)
{
        int k;

        k=stack[sflag]+stack[sflag-1];
       
        pop();
        pop();
        push(k);
}

void xmod(void)
{
        int k;
        k=stack[sflag-1]%stack[sflag];
        pop();
        pop();
        push(k);
}

void main(void)
{
        push(2);
        xprint();
        push(3);
        xprint();
        check_prime();
}

如果存為x1.c
請用gcc -g -o x x1.c -lm編譯,然后用gdb跟蹤就可以了。
原dc程序一直循環(huán),我改成取出50之前的質(zhì)數(shù),如果使用dc,則改動如下:

echo '2p3p[dl!d2+s!%0=@l!l^!<#]s#[s/0ds^]s@[p]s&[ddvs^3s!l#x0<&2+d6000>.]ds.x'|dc
這樣只執(zhí)行到6000以內(nèi);

論壇徽章:
7
榮譽(yù)版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07獅子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10雙子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
2 [報告]
發(fā)表于 2004-04-30 23:50 |只看該作者

關(guān)于求質(zhì)數(shù)的dc程序翻譯

好!翻譯思路清晰、嚴(yán)謹(jǐn)。推薦!
建議論壇的字體該改一下了,最近總惦記著這段dc代碼,直到讀了樓主的帖子,才反推出來原dc代碼的意思。我一直把其中的l(load)看成管道符,剛解讀到.宏命令[ddvs^3s!l#x0<&2+l.x]就一頭霧水,以為要做x的y次方再模除z,以為是什么高深的求解質(zhì)數(shù)的方法^_^

論壇徽章:
0
3 [報告]
發(fā)表于 2004-05-01 20:49 |只看該作者

關(guān)于求質(zhì)數(shù)的dc程序翻譯

應(yīng)該是用了歐拉定理吧,如果p是質(zhì)數(shù),則對任意2<=r<p有(r^p)%p = p

另dc是什么東西阿?

論壇徽章:
0
4 [報告]
發(fā)表于 2004-05-03 10:48 |只看該作者

關(guān)于求質(zhì)數(shù)的dc程序翻譯

segment fault on calculating primes within 100000, the last one is 65257.

論壇徽章:
0
5 [報告]
發(fā)表于 2005-04-03 17:25 |只看該作者

關(guān)于求質(zhì)數(shù)的dc程序翻譯

誰有dc的中文文檔??
想不到這個東東竟然這么強(qiáng)!

論壇徽章:
1
榮譽(yù)會員
日期:2011-11-23 16:44:17
6 [報告]
發(fā)表于 2005-04-03 17:40 |只看該作者

關(guān)于求質(zhì)數(shù)的dc程序翻譯

dc是一個任意精度的計(jì)算器.dc從標(biāo)準(zhǔn)輸入讀入命令,如果向dc提供參數(shù),那么這個參數(shù)就必需是文件名,dc從文件讀入并執(zhí)行,所有的輸出將被送到標(biāo)準(zhǔn)輸出,所有的錯誤被送到標(biāo)準(zhǔn)錯誤設(shè)備,輸入的數(shù)據(jù)將存放在堆棧中,每輸入一個數(shù)據(jù),dc將它放入棧中,如果輸入的是算術(shù)運(yùn)算符,那么dc就從棧中讀取數(shù)據(jù),并計(jì)算,將結(jié)果返回堆棧
PS:抄自:<<linux命令打全>>

論壇徽章:
0
7 [報告]
發(fā)表于 2005-04-03 20:02 |只看該作者

關(guān)于求質(zhì)數(shù)的dc程序翻譯

有dc應(yīng)用的例子嗎

論壇徽章:
1
榮譽(yù)會員
日期:2011-11-23 16:44:17
8 [報告]
發(fā)表于 2005-04-03 22:01 |只看該作者

關(guān)于求質(zhì)數(shù)的dc程序翻譯

[quote]原帖由 "li2002"]有dc應(yīng)用的例子嗎[/quote 發(fā)表:

/home/lee#dc
1
2
3
f    //顯示棧中所有數(shù)據(jù)
3
2
1
p    //顯示棧頂數(shù)據(jù)
3
*    //棧頂頭2個數(shù)據(jù)相乘
p   
6
f  //顯示當(dāng)前棧中數(shù)據(jù)
6
1
- //棧頂頭2個數(shù)據(jù)相減
p
-5
f //顯示棧中當(dāng)前數(shù)據(jù)
-5
ctr+D //退出
PS:對dc的了解止于此

論壇徽章:
0
9 [報告]
發(fā)表于 2005-04-04 01:07 |只看該作者

關(guān)于求質(zhì)數(shù)的dc程序翻譯

火兄,llinux命令打全,你知道哪里有下嗎?

論壇徽章:
1
榮譽(yù)會員
日期:2011-11-23 16:44:17
10 [報告]
發(fā)表于 2005-04-04 01:14 |只看該作者

關(guān)于求質(zhì)數(shù)的dc程序翻譯

[quote]原帖由 "ylbaby2003"]火兄,llinux命令打全,你知道哪里有下嗎?[/quote 發(fā)表:

這個大全,是我手頭的一本紙書,網(wǎng)上應(yīng)該有的,google一下吧!
您需要登錄后才可以回帖 登錄 | 注冊

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP