`

其他算法3

 
阅读更多

1.

/*
	 * 题目:打印出如下图案(菱形)
	 */
	//     *
	//     ***
	//    *****
	//   *******
	//    *****
	//     ***
	//     *
	/*
	 * 序列为 1,3,5,7,5,3,1
	 */
	public static void print22() {
		int start = 1;
		int end = 7;
		int count = 2;
		while (start > 0) {
			for (int i = 0; i < (end - start) / 2; i++) {
				System.out.print(" ");
			}
			for (int i = 0; i < start; i++) {
				System.out.print("*");
			}
			start += count;
			if (start >= end) {
				count = -count;
			}
			System.out.println();
		}
	}

 输出:

   *

  ***

 *****

*******

 *****

  ***

   *

 

 2.

/*
	 * 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。 (这里不用递归求)
	 */
	public static void print23() {
		int count = 20;
		double total = 0;
		int pre = 1;
		int now = 2;
		for (int i = 0; i < count; i++) {
			System.out.print(now + "/" + pre);
			if (i < (count - 1)) {
				System.out.print(" + ");
			}
			total += now * 1.0 / pre;
			int temp = pre + now;
			pre = now;
			now = temp;
		}
		System.out.println("=" + total);
	}

	public static void main(String[] args) {
		T2.print23();
	}

 输出:

2/1 + 3/2 + 5/3 + 8/5 + 13/8 + 21/13 + 34/21 + 55/34 + 89/55 + 144/89 + 233/144 + 377/233 + 610/377 + 987/610 + 1597/987 + 2584/1597 + 4181/2584 + 6765/4181 + 10946/6765 + 17711/10946=32.66026079864164

 

 3.

/*
	 * 题目:求1+2!+3!+...+20!的和
	 */
	public static void print24() {
		int count = 20;
		long total = 0;
		String str = "";
		for (int i = 1; i <= count; i++) {
			long temp = 1;
			for (int j = 1; j <= i; j++) {
				temp *= j;
			}
			System.out.println(i + "!=" + temp);
			str += i + "!";
			if (i < count) {
				str += " + ";
			} else {
				str += " = ";
			}
			total += temp;
		}
		System.out.println(str + total);
	}

	/*
	 * 题目:求1+2!+3!+...+20!的和
	 */
	public static void print25() {
		int count = 20;
		long total = 0;
		long temp = 1;
		String str = "";
		for (int i = 1; i <= count; i++) {
			temp *= i;
			total += temp;
			System.out.println(i + "!=" + temp);
			str += i + "!";
			if (i < count) {
				str += " + ";
			} else {
				str += " = ";
			}
		}
		System.out.println(str + total);
	}

	public static void main(String[] args) {
		T2.print24();
		T2.print25();
	}

 输出:

1!=1
2!=2
3!=6
4!=24
5!=120
6!=720
7!=5040
8!=40320
9!=362880
10!=3628800
11!=39916800
12!=479001600
13!=6227020800
14!=87178291200
15!=1307674368000
16!=20922789888000
17!=355687428096000
18!=6402373705728000
19!=121645100408832000
20!=2432902008176640000
1! + 2! + 3! + 4! + 5! + 6! + 7! + 8! + 9! + 10! + 11! + 12! + 13! + 14! + 15! + 16! + 17! + 18! + 19! + 20! = 2561327494111820313
1!=1
2!=2
3!=6
4!=24
5!=120
6!=720
7!=5040
8!=40320
9!=362880
10!=3628800
11!=39916800
12!=479001600
13!=6227020800
14!=87178291200
15!=1307674368000
16!=20922789888000
17!=355687428096000
18!=6402373705728000
19!=121645100408832000
20!=2432902008176640000
1! + 2! + 3! + 4! + 5! + 6! + 7! + 8! + 9! + 10! + 11! + 12! + 13! + 14! + 15! + 16! + 17! + 18! + 19! + 20! = 2561327494111820313

 

 4.

/*
	 * 题目:利用递归方法求5!。
	 */
	public static int print26(int n) {
		if (n == 1) {
			return 1;
		} else {
			return print26(n - 1) * n;
		}
	}

	public static void main(String[] args) {
		System.out.println(T2.print26(5));
	}

 输出:

120

 

5.

/*
	 * 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,
	 * 说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?(也可以用递归实现)
	 */
	public static void print27() {
		int count = 5;
		int start = 10;
		for (int i = 1; i < count; i++) {
			start += 2;
		}
		System.out.println(start);
	}

	public static void main(String[] args) {
		T2.print27();
	}

 

输出:

18

 

 6.

/*
	 * 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
	 */
	public static void print28(int n) {
		int length = 0;
		if (n >= 10000) {
			length = 5;
		} else if (n >= 1000) {
			length = 4;
		} else if (n >= 100) {
			length = 3;
		} else if (n >= 10) {
			length = 2;
		} else {
			length = 1;
		}
		System.out.print(n + "是" + length + "位数,逆序输出为:");
		String temp = "";
		for (int i = 0; i < length; i++) {
			temp += n % 10;
			n = n / 10;
		}
		System.out.println(Integer.valueOf(temp));
	}

	/*
	 * 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
	 */
	public static void print29(int n) {
		String str = String.valueOf(n);
		System.out.print(n + "是" + str.length() + "位数,逆序输出为:");
		String temp = "";
		for (int i = str.length() - 1; i >= 0; i--) {
			temp+=str.charAt(i);
		}
		System.out.println(Integer.valueOf(temp));
	}

	public static void main(String[] args) {
		T2.print28(10100);
		T2.print29(12345);
	}

 输出:

10100是5位数,逆序输出为:101
12345是5位数,逆序输出为:54321

 

7.

/*
	 * 题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
	 */
	public static void print30(int num) {
		int n = num;
		if (n >= 10000 && n < 100000) {
			if (n / 10000 == n % 10) {
				n = n / 10 % 1000;
				if (n / 100 == n % 10) {
					System.out.println(num + "是回文数");
					return;
				}
			}
			System.out.println(num + "不是回文数");
		}
	}

	/*
	 * 题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 (任意一个数都可以判断)
	 */
	public static void print31(int n) {
		String str = String.valueOf(n);
		if (new StringBuffer(str).reverse().toString().equals(str)) {
			System.out.println(n + "是回文数");
			return;
		}
		System.out.println(n + "不是回文数");
	}

	public static void main(String[] args) {
		T2.print30(10100);
		T2.print30(12345);
		T2.print30(12321);
		T2.print30(15851);
		T2.print30(15861);
		System.out.println("--------------------");
		T2.print31(10100);
		T2.print31(12345);
		T2.print31(12321);
		T2.print31(15851);
		T2.print31(15861);
	}

 输出:

10100不是回文数
12345不是回文数
12321是回文数
15851是回文数
15861不是回文数
--------------------
10100不是回文数
12345不是回文数
12321是回文数
15851是回文数
15861不是回文数

 

8.

/*
	 * 使用Java语言编写代码,将一个正整数分解质因数,例如:输入90,打印输出90=2*3*3*5
	 */
	public static void print43(int n) {
		System.out.print(n);
		if (n > 0) {
			String str = "";
			for (int i = 2; i <= n; i++) {
				if (n % i == 0) {
					str += i;
					n = n / i;
					i--;
					if (n != 1) {
						str += "*";
					}
				}
			}
			System.out.println("=" + str);
		}
	}

	public static void main(String[] args) {
		T2.print43(90);
		T2.print43(9);
		T2.print43(7);
		T2.print43(100);
	}

输出:

90=2*3*3*5
9=3*3
7=7
100=2*2*5*5

 

9.

/*
	 * 求出所有“水仙花数”,水仙花数是指一个 3位数,它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)
	 */
	public static void print44() {
		for (int i = 100; i < 1000; i++) {
			int n = i;
			int total = 0;
			while (n > 0) {
				int k = n % 10;
				total += k * k * k;
				n = n / 10;
			}
			if (total == i) {
				System.out.println(i);
			}
		}
	}

	public static void main(String[] args) {
		T2.print44();
	}

 输出:

153
370
371
407

 

分享到:
评论

相关推荐

    粒子群算法、遗传算法以及两者的结合的优化算法

    粒子群算法(Particle Swarm Optimization, PSO)与遗传算法(Genetic Algorithm, GA)是两种在优化问题中广泛应用的全局搜索方法。它们都是基于自然选择和群体智能的启发式算法,能够有效地解决复杂多模态优化问题...

    新型群智能优化算法(matlab实现)——烟花算法、粒子群算法、蚁群算法

    3. **蚁群算法**(Ant Colony Optimization, ACO): ACO由Dorigo等人于1992年提出,灵感源于蚂蚁寻找食物路径的行为。在ACO中,每只“蚂蚁”代表一条可能的解,蚂蚁在解空间中搜索最优路径,路径的选择依赖于路径...

    DES算法 加密算法解密算法

    DES 算法加密算法解密算法 DES 算法概述 DES(Data Encryption Standard)是一种对称密钥块加密算法,由美国...但是,随着计算机技术的发展,DES 算法已经不再被认为是安全的,已经被取代由其他加密算法,如 AES 等。

    国密算法(国家商用密码算法简介).pdf

    在文档中提到的其它算法和规范,例如Serpent、Twofish、MARS、RC6,都是在国际上有广泛认可的加密算法。这些算法虽然在文档中被提及,但并非国密算法的组成部分,它们通常是国际密码学标准中的算法,例如AES(高级...

    灰狼优化算法和粒子群优化算法比较

    如DA.pdf、SCA.pdf等可能包含不同的优化算法介绍,ALO.pdf可能涉及另一个名为“Artificial Lion Optimization”的算法,而WOA.pdf、MOALO.pdf、MOGWO.pdf等可能是关于多目标优化版本的GWO和其他算法。MFO、MVO则可能...

    蜂群算法 ABC算法

    通过对这四种算法与其他三种蜜蜂算法——人工蜂群算法(ABC)、王后蜂算法(QB)、快速蜜蜂婚配优化算法(FMBO)的性能比较,在四个基准测试函数上进行了实验,并且考虑了变量数量从少到多(最多100个变量)的变化。...

    DDA算法、中点bresenham算法及bresenham算法,带报告

    3. 通过编程,会在C/C++环境下完成用DDA算法、中点bresenham算法及bresenham算法对任意直线段的扫描转换。 实验设备及实验环境 计算机(每人一台) VC++6.0或其他C/C++语言程序设计环境 实验学时:2学时 实验内容 用...

    模拟退火算法和遗传算法程序

    用户可以根据提供的MATLAB代码,理解和学习这两种算法的工作原理,进一步调整参数以适应自己的问题,或者将算法应用到其他领域。 总之,这个MATLAB实现的模拟退火算法和遗传算法程序集为研究和学习优化算法提供了...

    数据挖掘18大算法实现以及其他相关经典DM算法

    C4.5算法与ID3算法一样,都是数学分类算法,C4.5算法是ID3算法的一个改进。ID3算法采用信息增益进行决策判断,而C4.5采用的是增益率。详细介绍链接 CART CART算法的全称是分类回归树算法,他是一个二元分类,采用...

    压缩感知之TVAL3算法

    【压缩感知】是一种新兴的信号处理技术,它颠覆了传统观念,表明了高维度的信号可以用远少于其自然采样率的随机采样点来...在处理单像素相机数据以及其他需要图像重构的应用中,TVAL3算法都展现出了强大的实用价值。

    遗传算法优化测试函数,方便理解

    遗传算法优化测试函数,方便理解 ,简单通俗易懂 ,方便和其他算法对比 遗传算法优化测试函数,方便理解 ,简单通俗易懂 ,方便和其他算法对比 遗传算法优化测试函数,方便理解 ,简单通俗易懂 ,方便和其他算法对比...

    链路状态路由算法(dijkstra算法)

    然后,每个路由器使用Dijkstra算法根据这些信息计算出到所有其他节点的最短路径。 在实际应用中,Dijkstra算法通常与Spanning Tree算法结合使用,以防止循环路径的出现。因为单纯使用Dijkstra可能会导致环路,而...

    Java数据挖掘常见18种算法实现和10种常见排序算法以及其他相关经典DM算法集合.zip

    在每个算法中给出了3大类型,主算法程序,调用程序,输入数据,调用方法如下: 将需要数据的测试数据转化成与给定的输入格式相同 然后以Client类的测试程序调用方式进行使用。 也可以自行修改算法程序,来适用于自己...

    1、该例子提供了L算法的原码,演示如何使用L算法 2、同时例子中也演示了L算法与其它算法的加密速度

    通过对L算法源码的深入研究和与其他算法的性能对比,我们可以更好地理解数据压缩的基本原理,并可能启发新的优化策略或改进现有算法。对于学习和实践数据压缩技术的人来说,这是一个非常有价值的资源。

    种子填充算法,扫描线填充算法,带报告

    3. 掌握在C/C++环境下用多边形填充算法编程实现指定多边形的填充。 实验设备及实验环境 计算机(每人一台) VC++6.0或其他C/C++语言程序设计环境 实验学时:2学时 实验内容 用种子填充算法和扫描线填充算法等任意两...

    K算法和P算法的C语言实现

    K算法和P算法的实现需要使用C语言或其他编程语言来编写代码。C语言是一种常用的编程语言,具有强大的编程能力和灵活性。 在K算法和P算法的实现中,需要定义图的结构,例如顶点和边的定义、路径的定义等。然后,需要...

    《国密算法》--国密算法的工具类.zip

    个人实战积累的成果,基于国密算法的总结,希望可以帮到您 亲们下载我任何一个付费资源后,即可私信联系我免费下载其他相关资源哦~ 个人实战积累的成果,基于国密算法的总结,希望可以帮到您 亲们下载我任何一个...

    yolo算法讲解ppt

    例如,上述内容中提到的YOLO与Fast R-CNN、Faster R-CNN、SSD等算法的对比,YOLO的帧率(FPS)显著高于其他算法,这体现了YOLO在实时性方面的优势。然而,YOLO算法在平均精度(mAP)上通常略低于一些基于区域的算法...

    A星算法 c语言实现 a*算法

    在实际应用中,启发式函数通常选用曼哈顿距离或欧几里得距离,但也可以根据具体问题选择其他合适的函数。启发式函数必须是admissible的,即对所有节点,它总是低估从该节点到目标节点的实际代价,这样可以确保找到的...

    压缩感知重建算法——GPSR算法

    这种算法在处理大规模数据集时,相比于其他重构算法,如OMP(Orthogonal Matching Pursuit)和BP( Basis Pursuit),通常具有更快的速度。 在实际应用中,GPSR算法常用于图像恢复、医学成像、无线通信等领域,尤其...

Global site tag (gtag.js) - Google Analytics