判断两个数之间有多少符合要求的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;
}