Java编程
- 1.完全数
- 2.亲密数
- 3.勾股数
- 4.自守数
- 5.输出菱形
- 6.矩阵最大值及其下标
1.完全数
输出10000以内的完全数
完全数:一个数等于其因数(除其本身以外)之和,这个数则为完全数
public class WanQuanShu {
public static void main(String[] args) {
//输出10000以内的完全数
//完全数:一个数等于其因数(除其本身以外)之和,这个数则为完全数
for(int i=1;i<10000;i++){
int sum=0;
//将除这个数本身以外的因数累加
for(int j=1;j<i;j++){
if(i%j==0){
sum+=j;
}
}
//如果相等则说明这个数是完全数
if(sum==i){
System.out.println(i);
}
}
}
}
运行结果
6
28
496
8128
2.亲密数
输出3000以内的所有亲密数
亲密数:若整数A的全部因数(除A外)之和等于B且整数B的全部因数(除B外)之和也等于A,则称A、B为亲密数。
public class QinMiShu {
public static void main(String[] args) {
//输出3000以内的所有亲密数
//亲密数:若整数A的全部因数(除A外)之和等于B且
//整数B的全部因数(除B外)之和也等于A,则称A、B为亲密数
for(int i=1;i<3000;i++){
int sum1=0;
//先将除A本身以外的因数累加求出B
for(int j=1;j<i;j++){
if(i%j==0){
sum1+=j;
}
}
int sum2=0;
//再将除B以外的因数累加
for(int k=1;k<sum1;k++){
if(sum1%k==0){
sum2+=k;
}
}
//判断求出的B的因数之和是否等于A
//令i<sum1是防止多次输出同一对亲密数
if(i==sum2&&i<sum1){
System.out.println(i+"---"+sum1);
}
}
}
}
运行结果
220---284
1184---1210
2620---2924
3.勾股数
输出某个范围内的勾股数
import java.util.Scanner;
public class GouGuShu {
public static void main(String[] args) {
//输出某个范围内的勾股数
System.out.println("输入范围(1~?):");
Scanner sc=new Scanner(System.in);
//输入范围上限
int num=sc.nextInt();
//用于统计有多少组勾股数
int count=0;
//方法一
for(int i=1;i<=num;i++){
for(int j=i+1;j<=num;j++){
for(int k=j+1;k<=num;k++){
//符合勾股定理则输出,记录加一
if(i*i+j*j==k*k){
System.out.println(i+","+j+","+k);
count++;
}
}
}
}
System.out.printf("共有%d组\n",count);
//用于统计有多少组勾股数
int count1=0;
//方法二
for(int i=1;i<=num;i++){
for(int j=i+1;j<=num;j++){
int k=(int)(Math.sqrt(i*i+j*j));
if(k*k==i*i+j*j&&k<=num){
System.out.println(i+","+j+","+k);
count1++;
}
}
}
System.out.printf("共有%d组\n",count1);
}
}
运行结果
输入范围(1~?):
20
3,4,5
5,12,13
6,8,10
8,15,17
9,12,15
12,16,20
共有6组
3,4,5
5,12,13
6,8,10
8,15,17
9,12,15
12,16,20
共有6组
4.自守数
求100000以内的自守数
自守数:一个数的平方的尾数等于这个数。(例:25^2 = 625,76^2 = 5776)。
public class ZiShouShu {
public static void main(String[] args) {
//求100000以内的自守数
//自守数:一个数的平方的尾数等于这个数。(例:25^2=625,76^2=5776)
for(long i=0;i<100000;i++){
long ii=i*i;
//计算这个数有几位
int wei=weiShu(i);
//将这个数的平方对10的位数次方取余即是其尾数
if(ii%Math.pow(10, wei)==i){
System.out.println("自守数:"+i+","+"平方为:"+ii);
}
}
}
//用于判断一个数有几个数字
public static int weiShu(long num){
int count=0;
while(num/10!=0){
num/=10;
count++;
}
return count+1;
}
}
运行结果
自守数:0,平方为:0
自守数:1,平方为:1
自守数:5,平方为:25
自守数:6,平方为:36
自守数:25,平方为:625
自守数:76,平方为:5776
自守数:376,平方为:141376
自守数:625,平方为:390625
自守数:9376,平方为:87909376
自守数:90625,平方为:8212890625
5.输出菱形
输入一个行数(奇数),输出对应行数的菱形
import java.util.Scanner;
public class Diamond {
public static void main(String[] args) {
//输入一个行数(奇数),输出对应行数的菱形
System.out.println("输入一个行数:");
Scanner sc=new Scanner(System.in);
//输入一个行数
int h=sc.nextInt();
//输出菱形的上半部分
for(int i=1;i<=h/2+1;i++){
for(int j=h/2-i;j>=0;j--){
System.out.print(" ");
}
for(int k=1;k<=i;k++){
System.out.print("* ");
}
System.out.println();
}
//输出菱形的下半部分
for(int i=1;i<=h/2;i++){
for(int j=1;j<=i;j++){
System.out.print(" ");
}
for(int k=h/2-i+1;k>0;k--){
System.out.print("* ");
}
System.out.println();
}
}
}
运行结果
输入一个行数:
7
*
* *
* * *
* * * *
* * *
* *
*
6.矩阵最大值及其下标
获取矩阵最大值及其下标
import java.util.Scanner;
public class MatrixMaximum {
public static void main(String[] args) {
//获取矩阵最大值及其下标
Scanner sc=new Scanner(System.in);
System.out.println("输入矩阵行数、列数:");
int h=sc.nextInt();
int l=sc.nextInt();
int[][] matrix=new int[h][l];
//接收数字初始化矩阵
for(int i=0;i<matrix.length;i++){
System.out.printf("输入矩阵第%d行\n",(i+1));
for(int j=0;j<matrix[i].length;j++){
matrix[i][j]=sc.nextInt();
}
}
System.out.println("--------");
//将矩阵输出
for(int[] i:matrix){
for(int j:i){
System.out.print(j+" ");
}
System.out.println();
}
System.out.println("--------");
//找出矩阵中的最大值
int max=matrix[0][0];
for(int[] i:matrix){
for(int j:i){
if(max<j){
max=j;
}
}
}
System.out.printf("矩阵最大值为%d\n",max);
//用于记录有几个最大值
int count=0;
System.out.println("其下标为:");
//找出矩阵中所有与最大值相同的元素并输出其下标
for(int i=0;i<matrix.length;i++){
for(int j=0;j<matrix[i].length;j++){
if(max==matrix[i][j]){
System.out.println((i+1)+","+(j+1));
count++;
}
}
}
System.out.printf("共有%d个\n",count);
}
}
运行结果
输入矩阵行数、列数:
3 4
输入矩阵第1行
1 2 3 4
输入矩阵第2行
2 3 4 1
输入矩阵第3行
3 4 1 2
--------
1 2 3 4
2 3 4 1
3 4 1 2
--------
矩阵最大值为4
其下标为:
1,4
2,3
3,2
共有3个