求对称素数更简洁代码?
编程求所有的3位数素数,且该数是对称的。所谓“对称”是指一个数,倒过来还是该数。例如:375不是对称数,因为倒过来变成了573。下面是我的思路及算法:
1、先求出3位数的素数(100~999)
2、再到素数中找对称素数
程序代码如下:
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int num,i;
for(num=100;num<=999;num++){
double sqrtm=sqrt(num*1.0);
for(i=2;i<=sqrtm;++i)
if(num%i==0) goto Loop;
if(num/100==(num%100)%10) cout<<num<<" 是一个对称素数."<<endl;
Loop:
}
system("pause");
}
计算结果为:
101 是一个对称素数.
131 是一个对称素数.
151 是一个对称素数.
181 是一个对称素数.
191 是一个对称素数.
313 是一个对称素数.
353 是一个对称素数.
373 是一个对称素数.
383 是一个对称素数.
727 是一个对称素数.
757 是一个对称素数.
787 是一个对称素数.
797 是一个对称素数.
919 是一个对称素数.
929 是一个对称素数.
不知还有没有更简洁的算法。