资讯动态

用 python 和 java 分别写出10道经典题

发布时间:2026/8/20 16:09:43 来源:尧图企业网站定制
1.求第100项之和已知1、1、2、3、5、8、13......就是从第三项开始每一项等于前两项之和。求第100项。斐波那契数列 第100项数列1, 1, 2, 3, 5, 8, 13, …从第三项起每一项等于前两项之和。求第100项的值。用两个变量 a 和 b 分别 表示当前项的前两项从第3项开始循环每次计算 c ab ,更新 a b , b c循环结束 后 b 就是 第 100 项100 项 数值很大 python 整数无上限 java 需要使用 BigIntegerpython 代码a,b 1,1 for i in range(3,101): c ab a b b c print(c)java 代码package a; //数列1, 1, 2, 3, 5, 8, 13, … //从第三项起每一项等于前两项之和。求第100项的值。 import java.math.BigInteger; public class Tm1 { public static void main(String[] args) { BigInteger a BigInteger.ONE; BigInteger b BigInteger.ONE; for (int i 3; i 100; i) { BigInteger c a.add(b); //c ab a b; //更新a b c; //更新b } System.out.println(第100项是: b); } }2、物不知数”出自《孙子算经》。题目为:今有物不知其数三三数之剩二五五数之剩三七七数之剩二问物几何?”。意思是说有一些物品不知道有多少个3个3个数的话还多出2个;5个5个数则多出3个;7个7个数也会多出2个。现假设物品总数不超过n(n1000)请编程计算满足条件的物品个数并输出。一个数x, 满足x 除以 3 余 2x 除以 5 余 3x 除以 7 余 2给定上限 n (n ≤ 1000)求出所有不超过 n 的 x。x 1000可以用暴力枚举每个数是否同时满足三个余数条件python 代码n int(input(请输入物品总数上限 n (n 1000):)) # 遍历 1 到 n for i in range(1, n1): # 同时满足三个条件 if i % 32 and i % 53 and i % 72: print(i, end ) print()java 代码package a; import java.util.Scanner; public class Tm2 { public static void main(String[] args) { Scanner sc new Scanner(System.in); System.out.println(请输入上限 n (1000)); int n sc.nextInt(); // 遍历 1 到 n for (int i 1; i n; i) { //同时满足三个余数条件 if(i %3 2 i%5 3 i%72){ System.out.println(i ); } } sc.close(); } }3、完数一个数如果恰好等于不包含它本身所有因子之和这个数就称为完数”。例如6的因子为1、2、3而6123因此6是完数”。编程序找出100之内的所有完数。遍历 2 到1001不是完数,对每个数 i,找出所有小于i 的因子,求和若和等于i则输出。完数一个数如它的所有真因子除了它自己以外的因数加起来刚好等于它自己 那它 就是完数。一个数的因子除了它自己最大不可能超过他的一半python 代码#完数 # 遍历 2 到 1001 不是完数。 # # 对每个数 num用内层循环找出所有小于 num 的因子即 num % i 0累加。 # # 若累加和等于 num则输出。 for num in range(2, 101): factor_sum 0 for i in range(1,num): if num % i 0: factor_sum i if factor_sum num: print(i, end ) print()java 代码package a; public class Tm3 { public static void main(String[] args) { for (int num 2; num 100; num) { int factorSum 0; // 因子和初始为0 // 找所有真因子1到num-1 for (int i 1; i num; i) { if (num % i 0) { // i是num的因子 factorSum i; // 累加 } } if (factorSum num) { // 因子和等于自身输出 System.out.print(num ); } } } }4、编程:求100到200之间的素数并统计其个数。判断素数时只需检查从 2 到 sqrt(n) 是否有因子。注意 1 不是素数但范围从 100 开始所以没问题。素数也叫质数一个大于 1 的整数如果只能被 1 和它自己整除那它就是素数。换句话说它找不到其他的因子。python 代码# 100 ~ 200 之间的素数 # 找出 100 到 200之间的素数并统计个数。 # 素数 只能被 1 和本身整除的数 import math #初始化 一个计数器 变量 count 0 #循环 让变量 num 从100遍历到200 # range 包头不包尾 所以写201 for num in range(100, 201): # 设置一个标志位 先假设当前的num是素数 isprime True # 计算当前数字的平方根取整后加1 limit int(math.sqrt(num))1 # 内层循环 试除 从2开始到 limit 结束 for i in range(2, limit): if num % i 0: isprime False break #若 num 能被 i 整除 余数为0 说明 它不是素数 跳出内层循环 # 检查标志位 if isprime: # 打印这个素数不换行 print(num,end ) # 找到一个计数器1 count 1 print(f\n一共有{count})java 代码package a; public class Tm4 { public static void main(String[] args) { int count 0; System.out.println(100到200之间的素数有); for (int n 100; n 200 ; n) { boolean isPrime true; // 假设当前的 n 是 素数 for (int i 2; i Math.sqrt(n); i) { if(n %i 0){ isPrime false; break; } } if(isPrime){ System.out.print(n ); count; } } System.out.println(\n\n素数的总个数 count); } }5、编程:显示前100个回文素数。每行显示10个素数。(回文素数是指一个数是素数也是回文数。例如:131既是素数也是回文数。)回文素数是指既是素数又是回文数正读反读相同的数。例如 131。输出前100个回文素数每行显示10个。6、利用循环程序打印如下三角形程序外层循环控制行数从 5 到 1 递减。内层循环打印星号每行星号个数等于当前行号python 代码# 打印 倒三角形 row 5 # i 从 5 降到1步长-1 for i in range(row,0,-1): # 打印 i 个 * 号 print(* * i) print()java 代码package a; public class Tm6 { public static void main(String[] args) { int row 5; for (int i row; i 1; i--) { for (int j 1; j i; j) { System.out.print(*); } System.out.println(); } } }7、九九乘法表外层循环 i 从 1 到 9表示第二个乘数。内层循环 j 从 1 到 i表示第一个乘数。输出 j × i i*j用制表符 \t 分隔。python 代码# 第7题九九乘法表 # 外层循环 i 从1到9 表示第二个乘数 for i in range(1,10): #i 1..9 #内层循环 j 从1到i 表示第一个乘数 for j in range(1,i1): #j 1..i # 输出 j x i i*j 用制表符 \t 分隔 print(f{i}*{j} {j*i},end \t) print() #内层循环结束换行java 代码package a; public class Tm7 { public static void main(String[] args) { for (int i 1; i 9; i) { //i 是第二个乘数 for (int j 1; j i ; j) { //j 是第一个乘数 System.out.print(j * j (i * j) \t); } System.out.println(); //每一行结束 换行 } } }8、利用循环程序打印如下图形。ABBCCCDDDDEEEEEFFFFFF第 i 行打印 i 次同一个字母。字母 A i - 1利用 ASCII 码ASCII码可以理解为 计算机里的“字符身份证号码”‌‌‌计算机只认识数字不认识字母。字母‘A’ 的身份证号码ASCII码 是 65字母‘B’是 66字母‘C’是 67...以此类推十进制十六进制字符说明00x00NUL空字符Null70x07BEL响铃Bell80x08BS退格Backspace90x09HT水平制表符Horizontal Tab100x0ALF换行Line Feed130x0DCR回车Carriage Return320x20空格可见为空格480x300数字0起始650x41A大写字母A起始970x61a小写字母a起始1270x7FDEL删除Deletepython 代码# 第8题 打印怎么三角形 # 第 i 行 打印 i 次 同一个字母 # 字母 A i - 1 (利用ASCII码) row 6 for i in range(1,row1): #i 1到6 # 计算行应打印的字母 ord(A) 65,加 ( ch chr(ord(A)i-1) print(ch*i)java 代码package a; public class Tm8 { public static void main(String[] args) { // 外层循环 决定字母是什么 现在在第几行 int row 6; for (int i 1; i row; i) { // (char) 将算出来的数字强行变成字符 char ch (char)(A i -1); // 计算字母 利用ASCII码,算出当前字母 // ord(A) 得到 65 // i 1 时65 0 65-char(65)-A // i 2 时65 1 66-char(66)-B // 内层循环 将当前字母重复打印 N 次 for (int j 1; j i; j) { System.out.print(ch); //打印字母不换行 } System.out.println(); //换行 } } }9、输入一段字符串统计其中大写字母、小写字母、数字、空格和其它字符的个数。将字符串转换成字符数组或使用 charAt遍历每个字符根据 ASCII 范围或字符比较分类大写A ~ Z小写a ~ z数字0 ~ 9空格 其他剩下的每类对应一个计数器最终输出。python 代码# 输入一段字符串统计其中大写字母、小写字母、数字、空格、其他字符的个数。 s input(请输入一段字符串) # 初始化5个计数器 upper lower digit space other 0 # 遍历字符串中的每个字符 for ch in s: if A ch Z: # 大写字母 upper 1 elif a ch z: # 小写字母 lower 1 elif 0 ch 9: # 数字 digit 1 elif ch : # 空格 space 1 else: # 其他字符 other 1 # 输出结果 print(f大写字母: {upper}, 小写字母: {lower}, 数字: {digit}, 空格: {space}, 其他: {other})java 代码package a; import java.util.Scanner; public class Tm9 { public static void main(String[] args) { Scanner sc new Scanner(System.in); System.out.print(请输入一段字符串); String str sc.nextLine(); // 读取整行包含空格 // 五个计数器初始都为 0 int upper 0; // 大写字母个数 int lower 0; // 小写字母个数 int digit 0; // 数字个数 int space 0; // 空格个数 int other 0; // 其他字符个数 // 使用 toCharArray() 获得字符数组然后用增强 for 循环遍历 // 这样不用关心下标非常直观 for (char ch : str.toCharArray()) { // 判断大写字母ASCII 中 A 到 Z if (ch A ch Z) { upper; } // 判断小写字母a 到 z else if (ch a ch z) { lower; } // 判断数字0 到 9 else if (ch 0 ch 9) { digit; } // 判断空格直接比较字符是否为空格 else if (ch ) { space; } // 其余一律算作其他字符 else { other; } } // 打印统计结果 System.out.println(大写字母: upper); System.out.println(小写字母: lower); System.out.println(数字: digit); System.out.println(空格: space); System.out.println(其他字符: other); sc.close(); } }10、统计各色色块的数量编程:已知有三种色块(红(“red”)、绿(“green”)、蓝(“blue”))现随机生成50个色块编程统计各种色块的数量并按从大到小排序输出。随机生成 字典计数 排序随机从颜色列表中用random.choice抽取。计数用字典HashMap存储每种颜色出现次数。排序将字典条目按值降序排序可用sorted或list.sort。有 3 种色块 red green blue要随机生成 50个要统计 各种色块的数量从大到小 排序 输出python 代码import random from collections import Counter # 专门用来计数的工具 #定义颜色 colors [red, green, blue] # 生成50个随机颜色 random_colors [random.choice(colors) for _ in range(50)] # Counter自动统计每个颜色出现次数 counter Counter(random_colors) # 此时 counter 的样子大概是{red: 18, green: 15, blue: 17} # 按数量从大到小排序 sorted_items sorted(counter.items(), keylambda x: x[1], reverseTrue) #items()返回(颜色,数量)对 #keylambda x: x[1]表示按 数量 排序 #reverseTrue降序 False 是 升序 # 循环输出 for color, count in sorted_items: print(f{color}: {count})java 代码两种方法 排序的方式有不同方法1的是升序list.sort((a1,a2) - a1.getValue() - a2.getValue());实际意思如果结果是负数说明 a1 小排前面升序。如果结果是正数说明 a1 大排后面。弱点这种写法不安全。如果数字非常大比如几亿两个大数相减可能会导致“溢出”结果算错了虽然这道题只有 50 个球不会溢出但在专业开发中这是被禁止的写法方法2的list.sort((e1, e2) - e2.getValue().compareTo(e1.getValue()));实际意思直接调用 Java 自带的“比较”功能优点安全 不会出现计算错误。直观 compareTo 就是“比较”的意思语义更清晰。灵活 注意看这里写的是 e2 比 e1这直接实现了从大到小降序。方法1package a; import java.util.*; //编程:已知有三种色块(红(“red”)、绿(“green”)、蓝(“blue”)) //现随机生成50个色块编程统计各种色块的数量并按从大到小排序输出。 // 有 3 种色块 red green blue // 要随机生成 50个 // 要统计 各种色块的数量 // 从大到小 排序 输出 public class Tm10 { public static void main(String[] args) { // 颜色 String [] color {red,green,blue}; // 计数 key 颜色 value 次数 HashMapString,Integer map new HashMap(); // 初始化先把红绿蓝都放进去次数设为0 for (String s :color){ map.put(s,0); } Random ran new Random(); for (int i 0; i 50; i) { // 生成 0-2 的随机数 对应数组的下标 int index ran.nextInt(color.length); String chosen color[index]; //拿到颜色名字 map.put(chosen,map.get(chosen)1); } // 准备排序 转换成 list 列表 // HashMap 本身不能排序需要将它转换成 list 列表 ListMap.EntryString, Integer list new ArrayList(map.entrySet()); // 排序 list.sort((a1,a2) - a1.getValue() - a2.getValue()); // 循环打印 列表中每个颜色和数量 getKey 颜色 getValue 数量 for (Map.EntryString,Integerentry :list) { System.out.println(entry.getKey() : entry.getValue()); } } }方法2import java.util.*; public class ColorStatistics { public static void main(String[] args) { String[] colors {red, green, blue}; Random rand new Random(); MapString, Integer map new HashMap(); // 初始化 for (String c : colors) map.put(c, 0); // 随机50次 for (int i 0; i 50; i) { int idx rand.nextInt(colors.length); String chosen colors[idx]; map.put(chosen, map.get(chosen) 1); } // 转换成List以便排序 ListMap.EntryString, Integer list new ArrayList(map.entrySet()); // 按值降序排序 list.sort((e1, e2) - e2.getValue().compareTo(e1.getValue())); // 输出 for (Map.EntryString, Integer e : list) { System.out.println(e.getKey() : e.getValue()); } } }

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价