玛雅人历法算法

宇宙与各天体之间的时间是平行的,但运行速度有差距,所以时间也有差距:

  --1898(宇宙年/天)

  --949(太阳年/天)

  --584(金星年/天)

  --365(地球年/天)

  365(地球年/天)+584(金星年/天)=949(太阳年/天)

  365(地球年/天)+584(金星年/天)+949(太阳年/天)=1898(宇宙年/天)

  1898数字的总和:1+8+9+8=26(卓尔金年/天)

  1898÷26(卓尔金年/天)=73(卓尔金年/天)

  73数字的总和:7+3=10(卓尔金年/月),26(卓尔金年/天)×10(卓尔金年/月)=260(卓尔金年/天)

  365数字组合分解小时数:

  3+6+5=14,5+8+4=17,9+4+9=22

  14×3=42,17×3=51,22×3=66

  4+2=6,5+1=6

  6+6=12,6+6+12=24(小时)

  365÷12(地球年/月)=30(地球年/天)

  949(太阳年/天)÷260(卓尔金年/天)=3 65(地球年/天)

根据《末世2012》的说法,可以得到以下代码:


package mayan;

/**
 * 预言2012世界末日的玛雅人突然消失之谜
 * 具体算法参考:《末世·2012》
   http://book.sina.com.cn/excerpt/sz/rw/2011-07-04/1410288098.shtml
 * 类描述
 * 修改日志
 * 
 * @since
 * @author 碧月幽灵
 * @version 1.01, 2011-7-9 
 * @see
 */
public class Space {
	
	private static int earth_year=365;	 //地球公转日期(天) 
	private static int venus_year=584;//金星公转日期(天)
	private static int sun_year=949;	 //太阳系公转周期 (天)
	private static int space_year=1898;	 //宇宙公转周期 (天)
	
	private static int hours=0;//地球自传周期(小时)
	private static int arg=3;//参数
	
	/**
	 * 
	 * 将各位数字相加  如(123 = 1+2+3 = 6)
	 * 修改日志
	 * 
	 * @param
	 * @return
	 * @exception
	 */
	private static int compulateSum(int num){
		String s=String.valueOf(num);
		int sum=0;
		for(int i=0;i<s.length();i++ ){
			sum=sum+Integer.parseInt(s.substring(i,i+1));
		}
		return sum;
	}	
	
	
	public static int getTzolkin(){//260( 卓尔金年/天)
		 //有一种推理说玛雅人来自外星,卓尔金年则是他们居住星球的公转周期,如果存在此星球,应在地球和金星之间
		 double temp=space_year/compulateSum(space_year);//73
		 int temp2=compulateSum((int)temp);//10 
		 int tzolkin=compulateSum(space_year)*temp2;//260  ( 卓尔金年/天)
		 return tzolkin;
	}	
	
	/**
	 * 玛雅人推算地球周期
	 * 修改日志
	 * 
	 * @param
	 * @return
	 * @exception
	 */
	public static void main(String[] args) {
		int ear=arg*compulateSum(earth_year);   //42
		int gol=arg*compulateSum(venus_year);//51
		int sun=arg*compulateSum(sun_year);     //66

		int e=compulateSum(ear);//6
		int g=compulateSum(gol);//6
		int s=compulateSum(sun);//12
		
		hours= e+g+s;
		
		System.out.println("地球自传周期:"+hours);
		System.out.println("地球公转周期:"+((double)sun_year/(double)getTzolkin())*100);
		System.out.println("太阳系公转周期:"+(earth_year+venus_year));
		System.out.println("宇宙公转周期:"+(earth_year+venus_year+sun_year));
	}

}


你可能感兴趣的:(Java综合)