求高手,c++ 哪错了!!!!!!
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main (){
//freopen("1019.in","r",stdin);
int m,n,x,y,k,ct;
bool ans;
scanf("%d%d",&m,&n);
for(int i=m;i<=n;i++){
x=i;
y=0;
while(x>0){
y=y*10+x%10;
x/=10;
}
if(y!=i)
continue;
ans=true;
k=(int)(sqrt(i*1.0));
for(int j=1;j<=k;j++){
if(i%j==0){
ans=false;
break;
}
if(!ans)
continue;
ct++;
printf("%d\n",i);
}
}
cout<<ct<<endl;
return 0;
}
回文素数
补充:一行二个整数m,n。(100≤m,n≤1000000)。输入补充:多行,每行一个数(按字典序由小到大输出),最后一行为数的个数。输出最佳答案
你程序至少有一个问题
k=(int)(sqrt(i*1.0));
for(int j=1;j<=k;j++){
的for循环中,j要从2开始的,否则任何数都是能被1整除的,你就判不到素数了
另外,一个建议,你既然用c++,且用了cout/cin.就没有必要用scanf和printf了
追问:
没有打错了是j=i
追问:
#include #include #include using namespace std;int main (){int m,n,x,y,k,i,j,ct=0;bool ans;cin>>m>>n;for(i=m;i0){y=y*10+x%10;x/=10;}if(y!=i) continue;ans=true;k=(int)(sqrt(i*1.0));for(j=i;j
追问:
cout
追问:
我改了一下 是对的吗
看不到完整的程序我简单地改了下,应该没有问题了
其他回答
暂无其它回答!