1314 - C语言程序设计教程(第三版)课后习题7.1

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

用筛法求N之内的素数。

题目输入

N

题目输出

0~N的素数

输入/输出样例

输入格式

100

输出格式

2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97

C语言解答

#include<stdio.h>
#include<math.h>
int main()
{
	int i,n,k;
	int a[1000]={0};
	scanf("%d",&n);
	for(i=2;i<=n;i++)
	{
		if(a[i]!=0)   continue;
		k=i+i;
		while(k<=n)
		{
			a[k]=1;
			k+=i;
		}
		
	}
	for(i=2;i<=n;i++)
	{
	 if(a[i]==0) printf("%d\n",i);
	}
	return 0;
} 

C++解答

#include<iostream>
#include<cmath>
using namespace std;
int a[10000];
int main()
{
	int n;
	cin>>n;
	int t=sqrt(n);
	for (int i=1; i<=n; i++) a[i]=1;
	for (int i=2; i<=t; i++)	//筛选法求素数表
		if (a[i])
			for (int j=2*i; j<=n; j+=i) a[j]=0;
	for (int i=2; i<=n; i++)
		if (a[i]) cout<<i<<endl;
	return 0;
}

Python解答

# coding=utf-8
n=int(input())
a=[1]*(n+1)
for i in range(2,n+1):
    if a[i]:
        j=i*2
        while j<n+1:
            a[j]=0
            j+=i
for i in range(2,n+1):
    if a[i]:
        print(i)