编写函数isprime(int a),用来判断自变量a是否为素数,若是素数,函数返回整数1,否则返回0

判断一个数是否为素数是一个基本的数学问题,编写一个函数 isprime来实现这个功能。下面提供一个专业的、优化的C语言代码示例,该函数接收一个整数参数 a,如果 a是素数则返回1,否则返回0。

函数实现

#include <stdio.h>
#include <math.h>

// 函数声明
int isprime(int a);

// 主函数用于测试
int main() {
    int num;
    printf("请输入一个整数: ");
    scanf("%d", &num);

    if (isprime(num)) {
        printf("%d 是素数\n", num);
    } else {
        printf("%d 不是素数\n", num);
    }

    return 0;
}

// 判断素数的函数实现
int isprime(int a) {
    if (a <= 1) {
        return 0;
    }
    if (a == 2 || a == 3) {
        return 1;
    }
    if (a % 2 == 0 || a % 3 == 0) {
        return 0;
    }
    for (int i = 5; i <= sqrt(a); i += 6) {
        if (a % i == 0 || a % (i + 2) == 0) {
            return 0;
        }
    }
    return 1;
}
​
 
 

代码详解

  1. 函数声明

    int isprime(int a);
    ​
     
     

    声明 isprime函数,该函数接收一个整数参数并返回一个整数(1表示素数,0表示非素数)。

  2. 主函数

    int main() {
        int num;
        printf("请输入一个整数: ");
        scanf("%d", &num);
    
        if (isprime(num)) {
            printf("%d 是素数\n", num);
        } else {
            printf("%d 不是素数\n", num);
        }
    
        return 0;
    }
    ​
     
     

    在主函数中,首先从用户处读取一个整数,然后调用 isprime函数进行判断,并根据返回值输出相应的结果。

  3. 判断素数的函数实现

    int isprime(int a) {
        if (a <= 1) {
            return 0;
        }
        if (a == 2 || a == 3) {
            return 1;
        }
        if (a % 2 == 0 || a % 3 == 0) {
            return 0;
        }
        for (int i = 5; i <= sqrt(a); i += 6) {
            if (a % i == 0 || a % (i + 2) == 0) {
                return 0;
            }
        }
        return 1;
    }
    ​
     
     
    • 初步判断

      • if (a <= 1): 1及以下的数都不是素数。
      • if (a == 2 || a == 3): 2和3是最小的两个素数。
      • if (a % 2 == 0 || a % 3 == 0): 排除所有能被2或3整除的数。
    • 优化的判断循环

      • 从5开始,每次循环增加6,并检查 a是否能被 i或 i+2整除。这是因为所有素数可以表示为6k±1(其中k是整数)。
      • 只需要检查到 sqrt(a),因为一个大于 sqrt(a)的数的因子必须小于 sqrt(a)
posted @ 2025-02-01 14:02  小前端攻城狮  阅读(98)  评论(0)    收藏  举报