linux写脚本计算两个正整数的最大公约数
时间: 2023-12-19 13:06:12 浏览: 115
以下是一个Linux脚本计算两个正整数的最大公约数的例子:
```shell
#!/bin/bash
echo "请输入第一个数m:"
read m
echo "请输入第二个数n:"
read n
while [ $n -ne 0 ]
do
r=$(($m % $n))
m=$n
n=$r
done
echo "最大公约数是:$m"
```
相关问题
写脚本计算两个正整数的最大公约数
以下是Java语言的两种计算两个正整数最大公约数的例子:
1.使用辗转相除法
```java
public static int gcd(int a, int b) {
if (b == 0) {
return a;
} else {
return gcd(b, a % b);
}
}
// 示例
int a = 12, b = 18;
int gcd = gcd(a, b);
System.out.println("最大公约数:" + gcd);
```
2.使用BigInteger类的gcd方法
```java
BigInteger a = new BigInteger("12");
BigInteger b = new BigInteger("18");
BigInteger gcd = a.gcd(b);
System.out.println("最大公约数:" + gcd);
```
Linux用脚本编程1. 写脚本计算两个正整数的最大公约数。 2. 写脚本给出输入一系列整数的最大数、第二最大数。
在Linux中使用bash脚本编程来完成这两个任务:
1. 计算两个正整数的最大公约数 (GCD) 的脚本可以使用欧几里得算法(Euclidean Algorithm)。这是一个常见的数学问题,可以用递归或循环实现。下面是一个简单的bash脚本示例:
```bash
#!/bin/bash
# 定义函数计算GCD
function gcd() {
local a=$1 b=$2
while [[ $b -gt 0 ]]; do
let "temp=b"
b=$((a % b))
a=$temp
done
echo $a
}
# 用户输入两个数字
read -p "请输入第一个正整数: " num1
read -p "请输入第二个正整数: " num2
# 检查输入是否为正整数
if ! [[ "$num1" =~ ^[0-9]+$ ]] || ! [[ "$num2" =~ ^[0-9]+$ ]]; then
echo "输入错误,请输入正整数。"
else
echo "两个数字的最大公约数是: $(gcd $num1 $num2)"
fi
```
运行此脚本时,它会提示用户输入两个正整数,并显示它们的最大公约数。
2. 脚本来找出一系列整数中的最大数和第二大的数,你可以先排序再取出最后一个和倒数第二个元素。下面是一个简单的例子:
```bash
#!/bin/bash
# 用户输入一串整数,以空格分隔
echo -n "请输入一系列整数(以空格分隔): "
read numbers
# 将输入的字符串分割成数组
IFS=' ' read -ra arr <<< "$numbers"
# 对数组进行排序
sorted_arr=($(printf "%s\n" "${arr[@]}" | sort -nr))
# 输出最大值和第二大的值
echo "最大数: ${sorted_arr[-1]}"
echo "第二大数据: ${sorted_arr[-2]}"
```
运行这个脚本时,它会让用户输入一组整数,然后输出最大的和次大的数值。
阅读全文