c++求三位对称素数

来源:百度知道 编辑:UC知道 时间:2024/06/15 15:08:10
我编了程序,但是运行后只有101.这是怎么回事,请高手帮忙修改一下啦!万分感谢!
#include<iostream>
using namespace std;

int main(){
for(int i=100;i<1000;++i){
int x=i/100;
int y=(i/10)-x*10;
int z=i%10;
if(i==x+10*y+100*z){
for(int j=2;j<i;++j)
if(i%j==0){
return 1;
}
cout<<i<<endl;
}
}
}

if(i%j==0){
return 1;
}
只要遇到不是素数,就退出main了,程序结束

加个标记变量记录i是否是素数
bool found=true;
if(i==x+10*y+100*z){
for(int j=2;j<i;++j)
if(i%j==0){ //标记置为不是素数
found=false;
break;
}
if(found==true) //如果是素数
cout<<i<<endl;

#include<iostream>
using namespace std;

int main(){
for(int i=100;i<1000;++i){
int x=i/100;
int y=(i/10)-x*10;
int z=i%10;
if(i==x+10*y+100*z){
for(int j=2;j<i;++j)
if(i%j==0) break;
if(j==i) cout<<i<<endl;
}
}
}

你错在return 1;直接退出程序了,所以只有1个结果

其实你判断是否对称,只需要判断各位和十位是否相同就可以了:
if(x==z)
{
...
}

你写的程序效率比较低,外层循环要执行900次。因为个位和百位是相同的,所以可以写两重循环,第一层为个位和百位,第二层为十位,该程序只要执行9*10=90次,效率比较高。

下面是程序代码及运行结果的截图。