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

编程程序求出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 matlab有关常微分方程的问题求解决
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable