1092: 素数表(函数专题)
- 题目描述
输入两个正整数m和n,输出m和n之间的所有素数。
要求程序定义一个prime()函数和一个main()函数,prime()函数判断一个整数n是否是素数,其余功能在main()函数中实现。
int prime(int n)
{
//判断n是否为素数, 若n为素数,本函数返回1,否则返回0
}
对于C/C++代码的提交,本题要求必须通过定义prime函数和main函数实现,否则,提交编译错误,要提交完整的程序。 - 输入
输入两个正整数m和n,m<=n,且都在int范围内。 - 输出
输出占一行。输出m和n之间的所有素数,每个数后有一个空格。测试数据保证m到n之间一定有素数。 - 参考代码:
#include<stdio.h>
#include<math.h>
int prime(int n) {
int i,a;
if(n==1)
return 0;
a=(int)sqrt(n);
for(i=2;i<=a;i++){
if(n%i==0)
return 0;
}
return 1;
}
int main(){
int i,n,m,b,flag=0;
scanf("%d%d",&m,&n);
for(i=m;i<=n;i++){
b=prime(i);
if(b==1 && flag==0){
printf("%d ",i);
flag=1;
continue;
}
if(b==1)
printf("%d ",i);
}
if(flag==0)
printf("No Answer");
}
- 代码解析:
根据题目要求,本题要分两步来写代码。
第一个代码,是prime函数,根据题目要求,用来判断是否是素数。素数以前解释过,就是质数。只要判断这个数是否有与其相除后有余数即可。
第二个代码,是main函数代码。这里我们需要判断没有素数的情况,所以我们写一个flag用以判断没有素数输出的情况。其他的素数按m到n的顺序输入循环,按序输出即可。
总体来说不难,不过题目要求的编译要求比较高,要多注意细节,避免编译错误!