hhh_haru 2022-09-26 14:45 采纳率: 42.9%
浏览 60
已结题

判断两个数之间符合要求的数的个数,一组数据可以过,一组数据过不了,请大家看看是哪里有问题呢

判断两个数之间有多少符合要求的9位数:前三位组成质数,后三位组成一个正整数的平方,且9位中不含“13”。
我写的程序在输入一组数据时数出的数量是正确的,输入另一组数据时结果与标准结果差了一个,我觉得可能是端点有符合要求的数没数上,但检查了觉得for循环终止条件是正确的……各位能帮忙看看是哪里的问题吗?

#include <iostream>
#include<cmath>
using namespace std;
int main()
{
    int a,b,sum=0,SUM=0;
    int qian,hou;
    double n,m;
    cin>>a>>b;
    for(int i=a;i<=b;i++)//从a开始判断,到b终止
    {
        hou=floor(i%1000);
        n=sqrt(hou);
        if(n-int(n)==0)//判断后三位是否是一个正整数的平方
        {
            qian=floor(i/1000000);
            for(int k=2;k<qian;k++)
            {
                if(qian%k==0) sum=sum+1;
                else sum=sum;
            }//判断是否是质数
            if(sum==0)
            {
                double c,d,e,f,g,h,s,j,k;
                c=floor(i/100000000);
                d=int((floor(i/10000000)))%10;
                e=int((floor(i/1000000)))%10;
                f=int((floor(i/100000)))%10;
                g=int((floor(i/10000)))%10;
                h=int((floor(i/1000)))%10;
                s=int((floor(i/100)))%10;
                j=int((floor(i/10)))%10;
                k=i%10;
                if(c*10+d!=13&&d*10+e!=13&&e*10+f!=13&&f*10+g!=13&&g*10+h!=13&&h*10+s!=13&&s*10+j!=13&&j*10+k!=13)
                {
                    SUM=SUM+1;
                }//判断是否包含“13”(我很菜只能写出这种看起来有点傻的判断方法……有无朋友教我qwq)
                else i++;
            }
            else i++;
        }
        
        else i++;
        
    }
    printf("%d",SUM);
    return 0;
    
}

  • 写回答

2条回答 默认 最新

  • a5156520 2022-09-26 14:58
    关注

    在for循环之前重置sum=0,因为sum用于标记当前数是否为质数,所以每个i都需要重置sum=0, 然后把else i++去掉,因为for循环里面有个i++, 已经有i自增了,所以else 的i++需要去掉 ;然后判断是否为正整数的平方那里,n要大于0,供参考。修改如下:

    
    
    
    #include <iostream>
    #include<cmath>
    using namespace std;
    int main()
    {
        int a,b,sum=0,SUM=0;
        int qian,hou;
        double n,m;
        cin>>a>>b;
        for(int i=a;i<=b;i++)//从a开始判断,到b终止
        {
            sum=0; 
            hou=floor(i%1000);
            n=sqrt(hou);
            if(n-int(n)==0&&n>0)//判断后三位是否是一个正整数的平方
            {
                qian=floor(i/1000000);
                for(int k=2;k<qian;k++)
                {
                    if(qian%k==0) sum=sum+1;
                    else sum=sum;
                }//判断是否是质数
                if(sum==0)
                {
                    double c,d,e,f,g,h,s,j,k;
                    c=floor(i/100000000);
                    d=int((floor(i/10000000)))%10;
                    e=int((floor(i/1000000)))%10;
                    f=int((floor(i/100000)))%10;
                    g=int((floor(i/10000)))%10;
                    h=int((floor(i/1000)))%10;
                    s=int((floor(i/100)))%10;
                    j=int((floor(i/10)))%10;
                    k=i%10;
                    if(c*10+d!=13&&d*10+e!=13&&e*10+f!=13&&f*10+g!=13&&g*10+h!=13&&h*10+s!=13&&s*10+j!=13&&j*10+k!=13)
                    {
                        SUM=SUM+1;
                    }//判断是否包含“13”(我很菜只能写出这种看起来有点傻的判断方法……有无朋友教我qwq)
                    //else i++;
                }
                //else i++;
            }
            
            //else i++;
            
        }
        printf("%d",SUM);
        return 0;
        
    }
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月6日
  • 已采纳回答 9月28日
  • 创建了问题 9月26日

悬赏问题

  • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向