Java基础之练习题03

想测试的话,复制然后在main方法里调用一下就完事了

1.写一个函数add,接受两个整数作为参数,返回两个整数的和
代码:

//两数之和
public static int q_1(int a,int b) {
	return a+b;
}

2.写一个函数,接受一个整数,输出这个整数的所有因子
代码:

//求因数
public static void q_2(int x) {
	for(int i=1;i<x;i++) {
		if(x%i==0) {
			System.out.print(i+",");
		}
	}
	System.out.println(x);
}

3.写一个函数,接受一个整数n,输出1+2+3+…+n的和
代码:

//累加
	public static void q_3(int n) {
		int sum=0;
		for(int i=1;i<=n;i++) {
			sum+=i;
		}
		System.out.println(sum);
		
	}

4.写一个函数,接受一个整型参数n,输出n个HelloWorld
代码

//输出n个HelloWorld
public static void q_4(int n) {
	for(int i=1;i<=n;i++) {
		System.out.println("HelloWorld");
	}
}

5.写一个函数,接受一个整数,输出这个整数是几位数
代码:

//判断是几位数
public static void q_5(int n) {
	int num=n;
	for(int i=1;i<num;i++) {
		n = n/10;
		if(n==0) {
			System.out.println(num+"是"+i+"位数");
			return;
		}
	}
}

6.求一个三位数,改三位数等于其没位数字的阶乘之和
代码:

//工具方法,求阶乘
public static int q_6(int n) {
		int sum = 1;
		for(int i=1;i<=n;i++) {
			sum*=i;
		}
		return sum;
	}
//求一个三位数,该三位数等于其每位数字的阶乘之和
	public static void q_6() {
		for(int i=100;i<1000;i++) {
			int ge = i%10;
			int shi = (i/10)%10;
			int bai = i/100;
			ge = q_6(ge);
			shi = q_6(shi);
			bai= q_6(bai);
			if(ge+shi+bai==i) {
				System.out.println(i);
			}
		}
	}

7.如果整数A的因子(包括1,不包括A本身)之和等于B,切整数B的全部因子(包括1,不包括B)的和也等于A,则乘A/B是一对亲密数.求3000以内的全部亲密数
代码:

//工具方法,求一个数的因数之和(包括1,不包括本身)
	public static int q_7(int x) {
		int sum=0;
		for(int i=1;i<x;i++) {
			if(x%i==0) {
				sum+=i;
			}
		}
		return sum;
	}
		//求亲密数
	public static void q_7() {
		for(int i=2;i<3000;i++) {
			int B = q_7(i);
			if(i==q_7(B)&&i!=B) {
				System.out.println(i+"和"+B+"是一对亲密数");
			}
		}
	}

8.验证哥德巴赫猜想:任何一个大于6的偶数,都能分解成两个质数的和.要求输入一个整数,输出这个数能被分解为哪两个质数的和
代码:

//验证哥德巴赫猜想,参数是大于6的偶数
public static void q_8(int x) {
	if(x<6||x%2!=0) {
		System.out.println("错误,这里的参数只能是6以上的偶数");
	}else {
		int num[] =new int[x];
		int number = 0;
		//求出小于x的所有的质数
		//存储到数组num[]里面
		for(int i=2;i<x;i++) {
			for(int j=2;j<i;j++) {
				if(i%j==0) {
					break;
				}else {
					if(j==i-1) {
						num[number] = i;
						number++;
					}
				}
			}
		}
		//对num[]里的所有两数相加
		for(int n=0;n<=number;n++) {
			//小于等于number/2,防止出现重复的情况
			for(int m=0;m<=number/2;m++) {
				if(num[m]+num[n]==x) {
					System.out.println(num[n]+"+"+num[m]+"="+x);
				}
			}
		}
		System.out.println("哥德巴赫猜想是真的!");
	}
}

猜你喜欢

转载自blog.csdn.net/qq_43336579/article/details/107875964