NYOJ-快速查找素数
来源:互联网 发布:javascript 是否是数组 编辑:程序博客网 时间:2024/06/05 17:28
快速查找素数
时间限制:1000 ms | 内存限制:65535 KB
难度:3
描述
现在给你一个正整数N,要你快速的找出在2…..N这些数里面所有的素数。
输入
给出一个正整数数N(N<=2000000)
但N为0时结束程序。
测试数据不超过100组
输出
将2~N范围内所有的素数输出。两个数之间用空格隔开
样例输入
5
10
11
0
样例输出
2 3 5
2 3 5 7
2 3 5 7 11
AC
#include <stdio.h>#include<string.h> #define M 2000000 //数字过大,进行宏定义 int a[M+5];int main(){ int N,i,j; for(i=2;i<=M;i++) { a[i]=0; } for(i=2;i<=M;i++) { if(!a[i]) { for(j=i+i;j<=M;j+=i) { a[j]=1; } } }//先将2000000以内的素数存起来,在后面直接用到 while(scanf("%d",&N)!=EOF,N) { for(i=2;i<=N;i++) { if(!a[i])//if(a[i]==0) { printf("%d ",i); } } printf("\n"); } return 0;}
最开始用的一种方法一直没有AC,显示超时,但是方法是对的
#include <stdio.h>int main(){ int N,i,j; do//筛法 { scanf("%d",&N); int a[N]; for(i=0;i<=N;i++)//要等号,因为N也包含在内 { a[i]=0; } if(N==0) break; else { for(i=2;i*i<=N;i++)//for(i=2;i<=N;i++) { if(a[i]==0) { for(j=i*i;j<=N;j=j+i)//for(j=i+i;j<=N;j+=i) { a[j]=1; } } } for(i=2;i<=N;i++) { if(a[i]==0) { printf("%d ",i); } } printf("\n"); } }while(N!=0); return 0;}
函数:
#include<stdio.h> #include<string.h> int a[2000005]; void fun() { int i,j; for(i=2;i<2000005;i++) { if(!a[i]) { for(j=i+i;j<2000005;j+=i) a[j]=1; } } } int main() { int n; fun(); while(scanf("%d",&n)!=EOF,n) { int i; for(i=2;i<=n;i++) { if(!a[i]) printf("%d ",i); } printf("\n"); } }
1 0
- NYOJ - 快速查找素数
- NYOJ-快速查找素数
- NYOJ 快速查找素数
- NYOJ-快速查找素数
- NYOJ 快速查找素数
- NYOJ 快速查找素数
- NYOJ--187快速查找素数
- NYOJ 187 快速查找素数
- nyoj 187 快速查找素数
- NYOJ 187 快速查找素数
- NYOJ 187 快速查找素数
- NYOJ 187 快速查找素数
- NYOJ 187 快速查找素数
- NYOJ 187 快速查找素数
- NYOJ 187 快速查找素数
- NYOJ 187 快速查找素数
- 快速查找素数 nyoj 187
- NYOJ 题目187快速查找素数
- 应用插件化实践--DroidPlugin插件 在Eclipse上开发Demo
- 每日下班试题
- GitHub上值得关注的iOS开源项目
- UVA - 568 Just the Facts
- 【Python学习笔记】IO编程
- NYOJ-快速查找素数
- 关于下载JDK及配置环境变量一些细节
- skyline pro培训
- UVA - 408 Uniform Generator
- requestAnimationFrame实现动画
- Hibernate注解
- 设置弹出层样式
- Robi改造计划更新---moveit终于在树莓派raspberry 3B(raspbian<Jessie>, ROS Indigo版本)上安装好了
- UIKIT详解之UITextView全面解析