035.圆形素数
数字 197 是一个圆形素数,这是因为所有它各位数的轮换 197,971 以及 719 也都是素数。
一百以下总共有十三个这样的素数,包括:2,3,5,7,11,13,17,31,37,71,73,79
和 97。求一百万以下有多少个这样的圆形素数?
答案:55
思路:最大有六位数,自身加上其轮换后的情况一共有六种情况。写一个函数判断是否为素数。写一个函数判断是否是圆形素数。(用substring)
代码如下:
public static boolean prime(int n){
for(int i=2;i*i<=n;i++)
if(n%i==0) return false;
return true;
}
public static boolean cirprime(int n){
int m;
String s1;
String s=Integer.toString(n);
// if(!prime(n)) return false;
for(int i=0;i<s.length();i++){
s1=s.substring(i)+s.substring(0,i);
m=Integer.valueOf(s1);
if(!prime(m)) return false;
}
return true;
}
public static int num(){
int n=0;
for(int i=2;i<1000000;i++)
if(cirprime(i)) n++;
return n;
}
public static void main(String[] args) {
System.out.println(num());
}
程序运行结果: