日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pku 2635 The Embarrassed Cryptographer 数论——素数筛选法+模拟大数除法

發(fā)布時(shí)間:2024/4/11 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pku 2635 The Embarrassed Cryptographer 数论——素数筛选法+模拟大数除法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

http://poj.org/problem?id=2635

因?yàn)榻o定的k是兩個(gè)素?cái)?shù)的乘機(jī),所以該數(shù)所包含的因子是{1,K,p,q}假設(shè)k = p*q p,q為素?cái)?shù),所以只要從小到大枚舉小于L的素?cái)?shù),只要能夠整出,就說明p已經(jīng)求得,否則則不存在。這里關(guān)鍵是k< 10^100次方,普通數(shù)據(jù)類型無法直接輸入,所以要模你除法,這里將k轉(zhuǎn)換成1000進(jìn)制的數(shù)然后模擬除法。如果是10進(jìn)制的數(shù)模擬除法是時(shí)間復(fù)雜度會(huì)是O(10^8)會(huì)超時(shí)。

View Code #include <stdio.h> #include <string.h> #define maxn 1000007int f[maxn],p[maxn]; int ans[40]; char K[107]; int L,len,anslen;//素?cái)?shù)篩選法打表 void Prim() {int i,j;len = 0;memset(f,0,sizeof(f));f[0] = f[1] = 1;for (i = 2; i*i < maxn; ++i){if (!f[i]){for (j = 2*i; j < maxn; j = j + i){f[j] = 1;}}}for (i = 2; i < maxn; ++i){if (!f[i]) p[len++] = i;}/*for (i = 0; i <= 50; ++i){printf("%d ",p[i]);}printf("\n");*/ } //將K轉(zhuǎn)化曾1000進(jìn)制數(shù) void convert() {int i;int lenx = strlen(K);memset(ans,0,sizeof(ans));anslen = 0;i = 0;if (lenx%3 != 0){for (; i < lenx%3; ++i){ans[0] = ans[0]*10 + K[i] - '0';}anslen++;}//printf(">>>>>>>>>>>%d\n",anslen);while (i < lenx){ans[anslen] = (K[i] - '0')*100 + (K[i + 1] - '0')*10 + (K[i + 2] - '0');i += 3;anslen++;//puts("TEST"); }} //模擬除法 int mod(int x) {int i;int tmp = 0;for (i = 0; i < anslen; ++i){tmp = (ans[i] + tmp*1000)%x; }return tmp; } int main() {int i;Prim();while (scanf("%s%d",K,&L)){if (!strcmp(K,"0") && !L) break;convert();//循環(huán)查找for (i = 0; p[i] < L; ++i){if (!mod(p[i])) break;}if (p[i] >= L) printf("GOOD\n");else printf("BAD %d\n",p[i]);;}return 0; }

?

總結(jié)

以上是生活随笔為你收集整理的pku 2635 The Embarrassed Cryptographer 数论——素数筛选法+模拟大数除法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。