是否存在一个多位数(多于1位),它的各位数字相同,同时它的
平方数的各位数字也相同。任何进制数字都行。
设计的思路:
把十进制数字按除p取余数转化为p进制数,设置g,p循环,把十进制
g及其平方数s先后转化为p进制数字,同时设置两个标示量t1和t2并且赋值为0
首先把数字g按照除p取余转化为p进制数字,如果该p进制数字存在两位不同,则标注为t1=1
如果p进制数字各位数字都相同保留t1=0
如果t1=0,把数字g的平方数字s转化为p进制数字,如果存在其中的两位数字不同,就标注为t2=1,
否则保留t2 = 0
检测t1=0且t2=0打印数字
package MantissaForword;
public class Main {
private static int p;
private static int e, c, g, d1, d2, t1, t2;
private static long s;
public static void main(String[] args) {
for(p=2;p<=99;p++){
for(g = p+1;g<=9999;g++){
s = g*g;
d1 = g;
e = d1%p;
d1 = d1/p;
t1=0;
while(d1 > 0){
c = d1%p;
d1 = d1/p;
if(c != e){
t1 = 1;
break;
}
}
if(t1 ==0){
d2 = (int)s;
e = d2 % p;
d2 = d2/p;
t2 = 0;
while(d2 > 0){
c = d2%p;
d2 = d2/p;
if(c != e){
t2 = 1;
break;
}
}
}
if(t1 == 0&& t2 == 0){//满足条件
System.out.printf("在%d进制中:",p);
d1 = g;
while(d1 > 0){
c = d1%p;
d1 = d1/p;
if(c<10){
System.out.printf("%d",c);
}else{
System.out.printf("[%d]",c);
}
}
System.out.println("^2=");
while(s>0){
c = (int)s%p;
s = s/p;
if(c<10){
System.out.printf("%d",c);
}else{
System.out.printf("[%d]",c);
}
}
}
}
}
}
}
原文:http://www.cnblogs.com/aicpcode/p/4269068.html