qq_43637829 2019-10-08 10:11 采纳率: 0%
浏览 5690

编程程序求出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条回答

  • threenewbee 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;
    }
    
    
    
    评论

报告相同问题?

悬赏问题

  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?