题目描述
用函数实现操作,查找指定区间[left,right]里的素数个数,将素数保存在prime数组里并在主函数里输出。
//提交时只需提交getprime函数
#include<stdio.h>
#include<string.h>
int prime[10000];
/*
在此写函数
*/
int main()
{
int getprime(int left,int right);
int left,right;
scanf("%d%d",&left,&right);
int i,n=getprime(left,right);
printf("%d\n",n);
for(i=1;i<n;i++)
printf("%d ",prime[i]);
if(i == n)
printf("%d\n",prime[i]);
return 0;
}
输入
一行包含两个整数,left和right(0<=left<=right<10000)。
输出
第一行一个整数表示[left,right]内素数的个数,第二行输出区间内全部的素数,用空格隔开。
样例输入
2 5
样例输出
3
2 3 5
参考代码
#include<stdio.h>
#include<string.h>
int prime[10000];
int getprime(int left,int right)
{
int a[right+1],i,j,b=1;
for (i=2;i<=right;i++)
a[i]=0;
for (i=2;i<=right;i++)
if(a[i]==0)
{
if(i<=right&&i>=left)
{
prime[b]=i;
b++;
}
for (j=i+i;j<=right;j=j+i)
a[j]=1;
}
return b-1;
}
int main()
{
int getprime(int left,int right);
int left,right;
scanf("%d%d",&left,&right);
int i,n=getprime(left,right);
printf("%dn",n);
for(i=1;i<n;i++)
printf("%d ",prime[i]);
if(i == n)
printf("%dn",prime[i]);
return 0;
}
解析
暂无