⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bigtest.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include <u.h>#include <libc.h>#include <mp.h>#include <libsec.h>char *sfactors[] ={	"3", "5", "17", "257", "641", "65537", "274177", "2424833", "6700417", "45592577",    "6487031809", "67280421310721", "1238926361552897", "59649589127497217",    "5704689200685129054721", "4659775785220018543264560743076778192897",    "7455602825647884208337395736200454918783366342657",    "93461639715357977769163558199606896584051237541638188580280321",    "741640062627530801524787141901937474059940781097519023905821316144415759504705008092818711693940737",    "130439874405488189727484768796509903946608530841611892186895295776832416251471863574140227977573104895898783928842923844831149032913798729088601617946094119449010595906710130531906171018354491609619193912488538116080712299672322806217820753127014424577"};long start;voidprintmp(mpint *b, char *tag){	int n;	char *p;	print("%s (%d) ", tag, b->top);	p = mptoa(b, 10, nil, 0);	write(1, p, strlen(p));	free(p);	print("\n");}inttiming(void){	long now, span;	now = time(0);	span = now-start;	start = now;	return span;}int expdebug;voidmain(int argc, char **argv){	mpint *p, *k, *d, *b, *e, *x, *r;	int i;	start = time(0);	fmtinstall('B', mpconv);	mpsetminbits(2*Dbits);	x = mpnew(0);	e = mpnew(0);	r = mpnew(0);	p = mpnew(0);	// b = 2^32	b = mpcopy(mpone);	mpleft(b, 32, b);	// 2^29440	p = mpcopy(mpone);	mpleft(p, 29440, p);	// 2^27392	k = mpcopy(mpone);	mpleft(k, 27392, k);	// k = 2^29440 - 2^27392	mpsub(p, k, k);	// p = 2^29440 - 2^27392 + 1	mpadd(k, mpone, p);//	if(!probably_prime(p, 18)){//		print("not a prime\n");//		exits(0);//	}//	print("probably prime\n");	mpright(k, 10, k);	printmp(k, "k =");expdebug = 1;	mpexp(b, k, p, x);	printmp(x, "x =");	print("timing %d\n", timing());	for(i = 0; i < nelem(sfactors); i++){		d = strtomp(sfactors[i], nil, 10, nil);		// e = k/d		mpdiv(k, d, e, r);		printmp(r, "r =");		// x = b^e mod p		mpexp(b, e, p, x);		printmp(x, "x =");		print("timing %d\n", timing());	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -