qq_43637829
qq_43637829
采纳率0%
2019-10-08 10:11 阅读 4.2k

编程程序求出m,n之间所有素数(包括m和n),其中n>m?

大佬们看一下我这个程序 运行时没有错误的但是好像限制条件有问题。不知道是哪里出的,我自己认为把非素数的条件考虑完全了但是测试数据还是不对。
问题描述

编程程序求出m,n之间所有素数(包括m和n),其中n>m。

输入形式

输入一行,包括整数m和n。

输出形式

输出一行,输出m与n间的所有素数,各数之间以空格分隔。若无素数,则输出no。

样例输入

1 10

样例输出

2 3 5 7

有一个测试数据是要输出no,但是我输出的是空值。

#include<stdio.h> 
#include<math.h>  
int main()    
{    int a,b,n,k,i;

     scanf("%d%d",&a,&b);
     if(a>=b||a<1)
     printf("no");
     else
     {

     if(a==1)
         a=2;
     for(n=a;n<=b;n++) 

     { 
         k=sqrt(n);
     for(i=2;i<=k;i++)
        if(n%i==0)break;
     if(i>=k+1)
     { 



         printf("%d ",n);
         }

}

}
         printf("\n");
      return 0;
}




  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • caozhy 从今以后生命中的每一秒都属于我爱的人 2019-10-08 10:28
    if(a>=b||a<1||a<=0||b<=0)
    你的逻辑很乱,a<=0了肯定a<1,还有必要重复么
    a<b,a又>=1,b<=0这个也不需要判断了
    
    

    给你修改了下

    #include<stdio.h> 
    #include<math.h>  
    int main()    
    {
        int a,b,n,k,i;
        int hasp = 0;
        scanf("%d%d",&a,&b);
        if(a>=b||a<1||a<=0||b<=0)
            printf("no");
        else
        {
            if(a==1)
            a=2;
            for(n=a;n<=b;n++) 
            { 
                k=sqrt(n);
                for(i=2;i<=k;i++)
                    if(n%i==0)break;
                if(i>=k+1)
                {
                    hasp = 1;
                    printf("%d ",n);
                }
            }
        }
    
        if (!hasp) printf("no\n") else printf("\n");
        return 0;
    }
    
    
    
    点赞 4 评论 复制链接分享
  • JonathanYan JonathanYan 2019-10-08 10:19

    无素数输出no的逻辑呢,你这个只要区间正确就输出素数,那如果一个素数都没有呢,你没有考虑

    点赞 评论 复制链接分享

相关推荐