但求过程001 发表于 3 天前

素数问题

能帮忙写一个“输入一个数,判断其是否为素数”的程序吗?

FishC 发表于 3 天前

素数是指大于1的自然数,只能被1和它本身整除。

以下是判断素数的Python程序:


# 判断素数的程序
num = int(input("请输入一个正整数:"))

if num > 1:
    # 检查从2到平方根是否有因数
    for i in range(2, int(num**0.5) + 1):
      if num % i == 0:
            print(f"{num} 不是素数")
            break
    else:
      print(f"{num} 是素数")
else:
    print(f"{num} 不是素数")


程序说明:
- 获取用户输入并转换为整数。
- 如果输入小于等于1,则直接输出不是素数。
- 对于大于1的数,循环从2到该数的平方根(取整),检查是否能整除。
- 如果能整除,则不是素数,跳出循环;否则,循环正常结束,是素数。

注意:这里使用了 for-else 结构,当循环没有被 break 中断时,执行 else 块。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

但求过程001 发表于 3 天前

FishC 发表于 2026-3-26 22:58
素数是指大于1的自然数,只能被1和它本身整除。

以下是判断素数的Python程序:


忘了讲了,我需要C程序的代码,谢谢~~

FishC 发表于 3 天前

但求过程001 发表于 2026-03-26 23:14
FishC 发表于 2026-3-26 22:58
素数是指大于1的自然 ...

以下是判断素数的C语言程序:

#include <stdio.h>

int main() {
    int num, i, isPrime = 1;
   
    printf("请输入一个正整数:");
    scanf("%d", &num);
   
    if (num <= 1) {
      isPrime = 0;
    } else {
      for (i = 2; i * i <= num; i++) {
            if (num % i == 0) {
                isPrime = 0;
                break;
            }
      }
    }
   
    if (isPrime) {
      printf("%d 是素数\n", num);
    } else {
      printf("%d 不是素数\n", num);
    }
   
    return 0;
}

程序说明:

1. 使用 isPrime 变量记录是否为素数,初始值为1(表示是素数)
2. 首先判断输入的数是否小于等于1,直接标记为非素数
3. 对于大于1的数,循环检查从2到该数的平方根之间是否有因数
   - 使用 i * i <= num 代替平方根计算,效率更高
   - 如果能整除,则不是素数,标记 isPrime = 0 并跳出循环
4. 最后根据 isPrime 的值输出结果

注意:素数(质数)是指大于1的自然数,只能被1和它本身整除的数。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

尉尉的可乐 发表于 昨天 13:38

def is_prime(x):
    if x < 2:
      return False
    if x == 2:
      return True
    if x % 2 == 0:
      return False
    m = int(x ** 0.5) + 1
    for i in range(3, m, 2):
      if x % i == 0:
            return False
    return True

n = int(input())
if is_prime(n):
    print(f"{n} 是素数")
else:
    print(f"{n} 不是素数")
页: [1]
查看完整版本: 素数问题