/**
*
*/
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内的完全数-------------------------