用Linux写一个辨别水仙花数的脚本
时间: 2024-03-01 08:55:00 浏览: 18
好的,以下是一个辨别水仙花数的Shell脚本:
```
#!/bin/bash
echo "请输入一个正整数:"
read num
# 检查输入是否为正整数
if ! [[ "$num" =~ ^[1-9][0-9]*$ ]]; then
echo "输入的不是正整数!"
exit 1
fi
# 计算每一位的立方和
sum=0
while [ "$num" -gt 0 ]; do
digit=$(($num % 10))
sum=$(($sum + $digit * $digit * $digit))
num=$(($num / 10))
done
# 判断是否为水仙花数
if [ "$sum" -eq "$1" ]; then
echo "这是一个水仙花数!"
else
echo "这不是一个水仙花数!"
fi
exit 0
```
使用方法:
1. 将上面的代码保存为一个文件,例如`narcissus.sh`。
2. 给文件添加执行权限:
```
chmod +x narcissus.sh
```
3. 运行脚本:
```
./narcissus.sh
```
4. 输入一个正整数,脚本会判断该数是否为水仙花数,并输出结果。
相关问题
帮我用c++写一个辨别素数的函数
好的,以下是一个用 C 语言编写的辨别素数的函数:
```c
#include <stdio.h>
int is_prime(int n) {
if (n <= 1) {
return 0;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
int main() {
int n;
printf("请输入一个整数:");
scanf("%d", &n);
if (is_prime(n)) {
printf("%d 是素数\n", n);
} else {
printf("%d 不是素数\n", n);
}
return 0;
}
```
这个函数接受一个整数作为参数,返回 1 表示这个整数是素数,返回 0 表示这个整数不是素数。函数的实现使用了一个简单的算法:从 2 开始,一直到这个数的平方根,依次判断是否能整除这个数,如果能整除,就说明这个数不是素数。如果一直到平方根都没有找到能整除这个数的数,就说明这个数是素数。
用python写一个使用opencv来辨别红圆环和绿圆环的代码
好的,以下是使用 OpenCV 识别红圆环和绿圆环的 Python 代码:
```
import cv2
import numpy as np
# 读取图片
img = cv2.imread("input.jpg")
# 将图片转换为灰度图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 通过阈值化处理,得到二值图
_, thresh = cv2.threshold(gray, 240, 255, cv2.THRESH_BINARY_INV)
# 检测圆
circles = cv2.HoughCircles(thresh, cv2.HOUGH_GRADIENT, 1, 20, param1=50, param2=30, minRadius=0, maxRadius=0)
# 如果检测到圆,遍历每一个圆
if circles is not None:
circles = np.round(circles[0, :]).astype("int")
for (x, y, r) in circles:
# 画出圆的位置
cv2.circle(img, (x, y), r, (0, 255, 0), 4)
# 画出圆心
cv2.rectangle(img, (x - 5, y - 5), (x + 5, y + 5), (0, 128, 255), -1)
# 显示图片
cv2.imshow("detected circles", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
上述代码使用 HoughCircles 函数来检测圆,并在图片上画出圆的位置和圆心。如果需要识别红圆环和绿圆环,可以对检测到的圆进行颜色判断,以确定是红圆环还是绿圆环。