给定一个整数m(50<m<20000),找出小于m的最大的10个素数。
输入格式:
输入在一行中给出一个正整数m(50<m<20000)。
输出格式:
在一行中按递减顺序输出10个满足条件的素数,每个素数输出占6列。没有其它任何附加格式和字符。
输入样例:
229
输出样例:
227 223 211 199 197 193 191 181 179 173
感谢中国青年政治学院的同学修正数据!
代码长度限制
1000 KB
时间限制
400 ms
内存限制
64 MB
//质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
#include <stdio.h>
#include <math.h>
int prime(int n);
int main(int argc, char *argv[])
{
int m;
scanf("%d",&m); //不要管忘记 &
int i,cnt=0;
for(i=m-1;i>1;i--){
if(prime(i)){
printf("%6d",i);
cnt++;
if(cnt==10){
break;
}
}
}
return 0;
}
int prime(int n) //判断一个数是不是素数?是:isPrime==1;否:isPrime==0;
{
int isPrime=1;
if(n<2){
isPrime=0;
}else{
int i;
for(i=2;i<=sqrt(n);i++){ //若n为合数,则必有不大于sqrt(n)的因子
if(n%i==0){
isPrime=0;
break;
}
}
}
return isPrime;
}