加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

下午整理的 素数打表 大数与整型相乘 求余模板

发布时间:2020-12-14 02:21:49 所属栏目:大数据 来源:网络整理
导读:#include cstdio#include cstringint p[101];void getPrim(int N){ // 打素数表的模板。 int i,j; // 素数最大小于N memset(p,-1,sizeof (p)); for(i=2; i*i=N; i++) { if(p[i]) { for(j=i*2; j=N; j+=i) p[j] = 0; } } p[0] = 0; for(i=2; i=N; i++) //1不
#include <cstdio>
#include <cstring>

int p[101];
void getPrim(int N){  // 打素数表的模板。
    int i,j;       // 素数最大小于N
    memset(p,-1,sizeof (p));
    for(i=2; i*i<=N; i++) {
        if(p[i]) {
            for(j=i*2; j<=N; j+=i)
                p[j] = 0;
        }
    }
    p[0] = 0;
    for(i=2; i<=N; i++) //1不是素数
        if(p[i]) p[++p[0]] = i; //p[0] 为素数个数
}

void initNum(char *str,int *num) {
    int i,k;   //字符转换为4位数存入num 数组
    num[0] = 1; //保存数组中有几位4位数字
    num[1] = 0;
    for(k=1,i=strlen(str)-1; i>=0; i--,k*=10) {
        if(k == 10000){
            k = 1;
            num[0]++;
            num[num[0]] = 0;
        }
        num[num[0]] += (str[i]-'0') * k;
    }
}
void Mul(int *num,int bit) {

    int i=1;
    __int64 tmp=0;
    for (i=1; i<=num[0]; i++) {
        tmp += 1ll*num[i] * bit;
        num[i] = tmp%10000;
        tmp /= 10000;
    }
    while(tmp) {
        num[++num[0]] = tmp%10000;
        tmp /= 10000;
    }
    return;
}
void printNum(int *num) {
    //大数输出
    printf("%d",num[num[0]]);  //第一位先输出
    for (int i=num[0]-1; i>=1; i--)
        printf("%04d",num[i]); //四位输出不足补零
    printf("n");
}

int Mod(int *num,int mod) {
    int ans = 0;
    for (int i=num[0]; i>=1; i--)
        ans = (1ll*ans*10000+num[i]) % mod;
    return ans;
}

int main() {
    int i;

    //得到小于等于100的素数,并输出
    getPrim(100);
    for (i=1; i<=p[0]; i++)
        printf("%dn",p[i]);

    //大数与整型数相乘,并输出结果
    int num[100],k;
    char str[100];
    scanf("%s%d",str,&k);
    initNum(str,num);
    Mul(num,k);
    printNum(num);

    //大数与整型取余并输出结果
    scanf("%s%d",num);
    printf("%dn",Mod(num,k));

    return 0;
}

收藏于 2011-10-19
来自于百度空间

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读