郑州轻工业大学oj题解(c语言)1092: 素数表(函数专题)

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
#include
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的顺序输入循环,按序输出即可。

总体来说不难,不过题目要求的编译要求比较高,要多注意细节,避免编译错误!

你可能感兴趣的:(郑州轻工业大学oj题解(c语言)1092: 素数表(函数专题))