`
universsky
  • 浏览: 92554 次
文章分类
社区版块
存档分类
最新评论

Java面向对象思想OOP理解 东海陈光剑 剑魔书仙读书录

 
阅读更多
/**
 *
 */
package iSword;

import java.util.Scanner;

/**
 * @author root
 *
 */


//*****************************主类************************************************//

public class data_basics {

	/**
	 * @param args
	 */
/**
 * main()主函数:程序执行入口
 * @param args
 */
/*
 * 自定义系统输出函数
 */
	public void print(String str){
		System.out.print(str);
	}


	public void find_prime_numbers(int N){

		print("2,3,");

	    int count=0;

	    for(int i=2;i<N;i++){
	        boolean b=false;

	        for(int j=2;j<=Math.sqrt(i);j++)
	        {
	            if(i % j==0) { // 逐个相除,一直到sqrt(i)不能整除的就是质数
	                b=false;
	                break;
	                }
	            else {
	                   b=true;
	            }
	        }
	            if (b==true){
	                   count++;
	                   print(i+",");
	                  }

	        }
	    print("The 1-N has"+count+" prime numbers. " );
	}





public void find_full_number(int N) {

	for(int i=1;i<N;i++){

		   //计算因子之和 t
		   int t=0;
		   for (int j=1;j<=i/2;j++){
		    if(i%j==0){
		     t=t+j;

		    }
		   }

		   if(t==i) {

		    print(i+" = ");
		    for (int k=1;k<=i/2;k++){
		     if(i%k==0 ) {
		      print(k+" + ");

		     }
		    }
		    print(" \n\n");

		   }

		  }
		 }





	public static void main(String[] args) {
		// TODO Auto-generated method stub
		data_basics dtb=new data_basics();


		System.out.println("begin 求最大公约数和最小公倍数---------" );
		//begin 求最大公约数和最小公倍数---------------------------------
		 int a,b,m;
		    Scanner s=new Scanner(System.in);

		    dtb.print("Please input a: ");
		    a=s.nextInt();

		    dtb.print("Please input b: ");
		    b=s.nextInt();




		    //调用主实现类 greatestCommonDivisor
		    greatest_common_divisor g=new greatest_common_divisor();
		    //调用主实现类 greatestCommonDivisor里面的主方法


		    m=g.get_greatest_commonDivisor(a, b);



		    int n=a*b/m;

		      System.out.println("最大公约数: " + m);
		      System.out.println("最小公倍数: " + n);

		    //end求最大公约数和最小公倍数---------------------------------

		      System.out.println("end 求最大公约数和最小公倍数---------" );



		      System.out.println("begin 求1-N质数-------------------------" );




		    //begin 求1-N质数 --------------------------------------------------
		      dtb.find_prime_numbers(100);  //N=100
		    //end 求1-N质数--------------------------------------------------

		      System.out.println("end 求1-N质数-------------------------" );


		      System.out.println("begin 求1-1000内的完全数-------------------------" );

		      dtb.find_full_number(1000);//求1-1000内的完全数

		      System.out.println("end 求1-1000内的完全数-------------------------" );







	}

}

//******************************************************************************//









//******************************************************************************//

//最大公约数:主实现类
class greatest_common_divisor{
  // 主方法
	public int get_greatest_commonDivisor(int x, int y){
		int t;
		if (x<y){
		  t=x;
		  x=y;
		  y=t;
		}
  while(y!=0){
	  if (x==y) return x;
	  else{
		  int k=x%y;
		      x=y;
		      y=k;
	  	}
  	}
  return x;
	}
}

//******************************************************************************//









-----------------------output---------------------

//******************************************************************************//




begin 求最大公约数和最小公倍数---------
Please input a: 13
Please input b: 26
最大公约数: 13
最小公倍数: 26
end 求最大公约数和最小公倍数---------
begin 求1-N质数-------------------------
2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,The 1-N has23 prime numbers. end 求1-N质数-------------------------
begin 求1-1000内的完全数-------------------------
6 = 1 + 2 + 3 +


28 = 1 + 2 + 4 + 7 + 14 +


496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248 +


end 求1-1000内的完全数-------------------------













分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics