java数据结构编程_Java数据结构编程
兔子問(wèn)題
古典問(wèn)題:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子長(zhǎng)到第三個(gè)月后每個(gè)月又生一對(duì)兔子,假如兔子都不死,問(wèn)每個(gè)月的兔子總數(shù)為多少?
public static void main(String[] args) {//這是一個(gè)菲波拉契數(shù)列問(wèn)題 System.out.println("第1個(gè)月的兔子對(duì)數(shù): 1"); System.out.println("第2個(gè)月的兔子對(duì)數(shù): 1"); int f1 = 1, f2 = 1, f, M = 24; for (int i = 3; i <= M; i++) { f = f2; f2 = f1 + f2; f1 = f; System.out.println("第" + i + "個(gè)月的兔子對(duì)數(shù): " + f2); } }
素?cái)?shù)問(wèn)題
判斷101-200之間有多少個(gè)素?cái)?shù),并輸出所有素?cái)?shù)。
程序分析:判斷素?cái)?shù)的方法:用一個(gè)數(shù)分別去除2到sqrt(這個(gè)數(shù)),如果能被整除, 則表明此數(shù)不是素?cái)?shù),反之是素?cái)?shù)。
public static void main(String[] args) { int count = 0; for (int i = 101; i < 200; i += 2) { boolean b = false; for (int j = 2; j <= Math.sqrt(i); j++) { if (i % j == 0) { b = false; break; } else { b = true; } } if (b == true) { count++; System.out.println(i); } } System.out.println("素?cái)?shù)個(gè)數(shù)是: " + count); }
水仙花數(shù)
打印出所有的 "水仙花數(shù) ",所謂 "水仙花數(shù) "是指一個(gè)三位數(shù),其各位數(shù)字立方和等于該數(shù)本身。例如:153是一個(gè) "水仙花數(shù) ",因?yàn)?53=1的三次方+5的三次方+3的三次方。
public static void main(String[] args) { int b1, b2, b3; for (int m = 101; m < 1000; m++) { b3 = m / 100; b2 = m % 100 / 10; b1 = m % 10; if ((b3 * b3 * b3 + b2 * b2 * b2 + b1 * b1 * b1) == m) { System.out.println(m + "是一個(gè)水仙花數(shù)"); } } }
分解質(zhì)因數(shù)
將一個(gè)正整數(shù)分解質(zhì)因數(shù)。例如:輸入90,打印出90=233*5。
程序分析:對(duì)n進(jìn)行分解質(zhì)因數(shù),應(yīng)先找到一個(gè)最小的質(zhì)數(shù)k,然后按下述步驟完成:
如果這個(gè)質(zhì)數(shù)恰等于n,則說(shuō)明分解質(zhì)因數(shù)的過(guò)程已經(jīng)結(jié)束,打印出即可。
如果n <> k,但n能被k整除,則應(yīng)打印出k的值,并用n除以k的商,作為新的正整數(shù)你n,重復(fù)執(zhí)行第一步。
如果n不能被k整除,則用k+1作為k的值,重復(fù)執(zhí)行第一步。
public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.print("請(qǐng)鍵入一個(gè)正整數(shù): "); int n = s.nextInt(); int k = 2; System.out.print(n + "="); while (k <= n) { if (k == n) { System.out.println(n); break; } else if (n % k == 0) { System.out.print(k + "*"); n = n / k; } else k++; } }
公約數(shù),公倍數(shù)
輸入兩個(gè)正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。
分析:在循環(huán)中,只要除數(shù)不等于0,用較大數(shù)除以較小的數(shù),將小的一個(gè)數(shù)作為下一輪循環(huán)的大數(shù),取得的余數(shù)作為下一輪循環(huán)的較小的數(shù),如此循環(huán)直到較小的數(shù)的值為0,返回較大的數(shù),此數(shù)即為最大公約數(shù),最小公倍數(shù)為兩數(shù)之積除以最大公約數(shù)。
public static void main(String[] args) { int a, b, m; Scanner s = new Scanner(System.in); System.out.print("鍵入一個(gè)整數(shù): "); a = s.nextInt(); System.out.print("再鍵入一個(gè)整數(shù): "); b = s.nextInt(); deff cd = new deff(); m = cd.deff(a, b); int n = a * b / m; System.out.println("最大公約數(shù): " + m); System.out.println("最小公倍數(shù): " + n); } } class deff { public int deff(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; }
完數(shù)
一個(gè)數(shù)如果恰好等于它的因子之和,這個(gè)數(shù)就稱(chēng)為 "完數(shù) "。例如6=1+2+3.編程 找出1000以?xún)?nèi)的所有完數(shù)。
public static void main(String[] args) { System.out.println("1到1000的完數(shù)有: "); for (int i = 1; i < 1000; i++) { int t = 0; for (int j = 1; j <= i / 2; j++) { if (i % j == 0) { t = t + j; } } if (t == i) System.out.print(i + " "); } }
排列組合
有1、2、3、4四個(gè)數(shù)字,能組成多少個(gè)互不相同且無(wú)重復(fù)數(shù)字的三位數(shù)?都是多少?
public static void main(String[] args) { int count = 0; for (int x = 1; x < 5; x++) { for (int y = 1; y < 5; y++) { for (int z = 1; z < 5; z++) { if (x != y && y != z && x != z) { count++; System.out.println(x * 100 + y * 10 + z); } } } } System.out.println("共有" + count + "個(gè)三位數(shù)"); }
判斷天數(shù)
輸入某年某月某日,判斷這一天是這一年的第幾天?
public static void main(String[] args) { int year, month, day; int days = 0; int d = 0; Scanner scan=new Scanner(System.in); System.out.print("輸入年:"); year = scan.nextInt(); System.out.print("輸入月:"); month = scan.nextInt(); System.out.print("輸入天:"); day = scan.nextInt(); for (int i = 1; i < month; i++) { switch (i) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: days = 31; break; case 4: case 6: case 9: case 11: days = 30; break; case 2: if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) { days = 29; } else { days = 28; } break; } d += days; } System.out.println(year + "-" + month + "-" + day + "是這年的第" + (d + day) + "天。"); }
乘法表
輸出9*9乘法表。
public static void main(String[] args) { for (int i = 1; i < 10; i++) { for (int j = 1; j <= i; j++) { System.out.print(j + "*" + i + "=" + j * i + " "); if (j * i < 10) { System.out.print(" "); } } } System.out.println(); }
猴子吃桃問(wèn)題
猴子第一天摘下若干個(gè)桃子,當(dāng)即吃了一半,還不癮,又多吃了一個(gè) 第二天早上又將剩下的桃子吃掉一半,又多吃了一個(gè)。以后每天早上都吃了前一天剩下 的一半零一個(gè)。到第10天早上想再吃時(shí),見(jiàn)只剩下一個(gè)桃子了。求第一天共摘了多少。
public static void main(String[] args) { int x = 1; for (int i = 2; i <= 10; i++) { x = (x + 1) * 2; } System.out.println("猴子第一天摘了 " + x + " 個(gè)桃子"); }
有序數(shù)列前n項(xiàng)和
一有序數(shù)列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個(gè)數(shù)列的前20項(xiàng)之和。 public static void main(String[] args) { int x = 2, y = 1, t; double sum = 0; for (int i = 1; i <= 20; i++) { sum = sum + (double) x / y; t = y; y = x; x = y + t; } System.out.println("前20項(xiàng)相加之和是: " + sum); }
前n項(xiàng)階乘和
求1+2!+3!+…+20!的和
public static void main(String[] args) { long sum = 0; long fac = 1; for (int i = 1; i <= 20; i++) { fac = fac * i; sum += fac; } System.out.println(sum); }
回文數(shù)
一個(gè)5位數(shù),判斷它是不是回文數(shù)。即12321是回文數(shù),個(gè)位與萬(wàn)位相同,十位與千位相同。
public static void main(String[] args) { Scanner scan = new Scanner(System.in); boolean is = true; System.out.print("請(qǐng)輸入一個(gè)正整數(shù):"); long number = scan.nextLong();//得到一個(gè)長(zhǎng)整型 String string = Long.toString(a);//把整形轉(zhuǎn)換為字符串 char[] ch = string.toCharArray();//將字符串轉(zhuǎn)換成字符數(shù)組,便于對(duì)每一個(gè)字符進(jìn)行單獨(dú)操作 int j = ch.length;//得到字符數(shù)組長(zhǎng)度 for (int i = 0; i < j / 2; i++) { if (ch[i] != ch[j - i - 1]) { is = false; } } if (is == true) { System.out.println("這是一個(gè)回文數(shù)"); } else { System.out.println("這不是一個(gè)回文數(shù)"); } }
本文地址:https://blog.csdn.net/m0_49926319/article/details/108848140
希望與廣大網(wǎng)友互動(dòng)??
點(diǎn)此進(jìn)行留言吧!
總結(jié)
以上是生活随笔為你收集整理的java数据结构编程_Java数据结构编程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java 下载url图片_java下载u
- 下一篇: python测量血压_python距离测