运算模拟的典范

是否存在一个多位数(多于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);
						}
					}
					
					
					
					
					
					
				}
				
				
				
				
				
				
				
			}
		}

	}

}

  

posted on 2015-02-03 03:11  aicpcode  阅读(164)  评论(0编辑  收藏  举报

导航