数学问题_素数筛法
例4.6 素数判定 (1047)
- 题目描述:给定一个数n,要求判断其是否为素数(0,1,负数都是非素数)。
- 输入:测试数据有多组,每组输入一个数n。
- 输出:对于每组输入,若是素数则输出yes,否则输入no。
样例输入: 13 样例输出: yes
#include<stdio.h> #include<math.h> using namespace std; bool judge(int x){ if(x<=) return false; int bound=(int)sqrt(x)+; for(int i=;i<bound;i++){ if(x%i==) return false; } return true; } int main(){ int x; while(scanf("%d",&x)!=EOF){ puts(judge(x)?"yes":"no"); } return ; }
例4.7 素数 (1163)
- 题目描述:输入一个整数n(2<=n<=10000),要求输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数,如果没有则输出-1。
- 输入:输入有多组数据。每组一行,输入n。
- 输出:输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数(素数之间用空格隔开,最后一个素数后面没有空格),如果没有则输出-1。
样例输入: 100 样例输出: 11 31 41 61 71
#include<stdio.h> int prime[10000]; bool mark[10001]; int primeSize; void init(){ for(int i=2;i<=10000;i++) mark[i]=false; primeSize=0; for(int i=2;i<=10000;i++){ if(mark[i]==true) continue; prime[primeSize++]=i; for(int j=i*i;j<=10000;j+=i){//因为i*k(k<i)必被k标记过 mark[j]=true; } } } int main(){ init(); int n; while(scanf("%d",&n)!=EOF){ bool isOutput=false;//表示是否有过输出,第一个输出的数字以外均需在输出前附加一个空格 for(int i=0;i<primeSize;i++){ if(prime[i]<n&&prime[i]%10==1){ if(!isOutput){ isOutput=true; printf("%d",prime[i]); } else printf(" %d",prime[i]); } } if(!isOutput) printf("-1\n"); else printf("\n"); } return 0; }
相关推荐
penkgao 2020-08-17
CloudXli 2020-06-11
baike 2020-01-04
hiKirin 2013-03-09
BITSKY 2019-03-29
liangds 2018-11-30
浪漫老猫 2018-11-27
一亩半分地 2018-11-24
lundongcai 2018-11-22
zzpdljd 2018-11-20
assastor 2018-05-02
HTML学堂码匠 2018-03-19
lkrocksthone 2017-12-26
cairencong 2018-01-23
chenzulong 2017-10-30
sharkandshark 2017-04-14
pythoncream 2016-05-05
丁一鸣的CSDN 2014-06-12