2137 - [数值问题]素数筛选
时间限制 : 1 秒
内存限制 : 128 MB
素数筛选(prime/c/cpp)
【问题描述】
输入一正整数n(2<=n<=10^5),按顺序输出2到n范围内的所有素数。
【输入格式】prime.in
输入共一行一个数,表示n的值。
【输出格式】primeout
输出若干行,每行5个素数,用空格隔开。
【输入样例1】 <br />
20
【输出样例1】
2 3 5 7 11
13 17 19
<br />
<br />
<br />
题目输入
题目输出
输入/输出样例
输入格式
输出格式
C语言解答
#include<stdio.h> #include<math.h> int main() { int n,i,j,a; double k; while(~scanf("%d",&n)) { a=0; for(i=2;i<=n;i++) { k=sqrt(i); for(j=2;j<=k;j++) { if(i%j==0) { break; } } if(j>k) { printf("%d",i); a++; if(a%5==0) printf("\n"); else printf(" "); } } printf("\n"); } return 0; }
C++解答
// // main.cpp // 上机练习 // // Created by 朱世起 朱 on 2017/2/20. // Copyright © 2017年 朱世起 朱. All rights reserved. // #include <iostream> #include <stdio.h> #include <string> using namespace std; int main(){ long n,temp; cin>>n; bool *a=new bool[n+1]; for (long i=2; i<=n; ++i) { a[i]=true; } for (long i=2; i<=n+1; ++i) { for (long k=2; k<=i; ++k) { temp=i*k; if(temp<=n)a[temp]=false; else break; } } //输出 long set=1; for (long j=2 ;j<=n; ++j) { if (set==6){cout<<endl;set=1;} if (set==1 && a[j]==true){cout<<j;++set;} else if(a[j]==true){cout<<" "<<j;++set;} } return 0; }
Python解答
# coding=utf-8 import sys def main(): a = list() k = 0 n = int(sys.stdin.readline().strip()) for i in range(2, n+1): j =2 for j in range(2, int(i ** 0.5)+1):#**代表乘方 if (i % j == 0): break else: a.append(i) for index,num in enumerate(a): if(index+1)%5 == 0: print(num) else: print(num,end='\t') if __name__ == '__main__': main()