bjfu1012 素数

    xiaoxiao2026-04-17  2

    素数

    时间限制(C/C++):5000MS/10000MS          运行内存限制:65536KByte 总提交:1131            测试通过:207

    描述

    数论是ACM中用途很广的数学分支,而数论里研究得最多的问题,又都和素数相关,所以有人戏称数论为“素论”,也是不无道理的。

    输入

    输入首先包含一个整数T,表示测试数据组数,T不超过100。然后是T组测试数据,每组测试数据包含两个整数M、N,其中1<=M<=N<=10000000

    输出

    对于每一组测试数据,请在一行内输出从M到N的所有素数,每个素数之间以逗号分开。

    样例输入

    3 1 10 1 1 5 7

    样例输出

    2,3,5,7 5,7

    题目来源

    ben

    这题中有个素筛模板。

    AC代码:

    #include<stdio.h> #include<string.h> #define N 10000000 int f[N+10]; int main() { int t,m,n,i,x,y,b,c; scanf("%d",&t); for(i=0;i<t;i++) { scanf("%d %d",&m,&n); if(n<=m) { printf("\n"); continue; } else { memset(f,0,N); f[1]=1; for(x=2;x*x<=n;x++) { if(f[x]==1) continue; for(y=x;y*x<=n;y++) f[x*y]=1; } b=0; for(x=m;x<=n;x++) if(f[x]==0) b=b+1; c=0; for(x=m;x<=n;x++) { if(f[x]==0) { printf("%d",x); c=c+1; if(b==c) printf("\n"); else printf(","); } } } } return 0; }素筛模板:

    memset(f,0,N); f[1]=1; for(x=2;x*x<=n;x++) { if(f[x]==1) continue; for(y=x;y*x<=n;y++) f[x*y]=1; }

    转载请注明原文地址: https://ju.6miu.com/read-1308941.html
    最新回复(0)