写一个判素数的函数int fun(int x),判断形参x是否是素数,若是则函数返回值1,否则返回值0。在主函数中调用该函数,输出100以内的所有素数。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int is_prime(int x)
{
    int j = 0;
    { for (j = 2; j < x; j++)
        if (x % j == 0)
            return 0;
    }
    return 1;

}
int main()
{
    int i = 0;
    printf("以下为100之内的素数:\n");
    for (i = 2; i < 100; i++)
    {
        if (is_prime(i) == 1)
            printf("%d\t", i);
    }

    return 0;
}

 

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是一个判断素数函数: ```c int fun(int x) { if (x <= 1) { // 1不是素数 return ; } for (int i = 2; i <= sqrt(x); i++) { // 从2到sqrt(x)枚举可能的因子 if (x % i == ) { // 如果x能被i整除,说明x不是素数 return ; } } return 1; // 如果上面的循环都没有返回,说明x是素数 } ``` 在主函数,可以这样调用: ```c int main() { int x; scanf("%d", &x); if (fun(x)) { printf("%d是素数\n", x); } else { printf("%d不是素数\n", x); } return ; } ``` 注意,这个函数只能判断小于等于int类型范围内的整数是否是素数。如果需要判断更大的数是否是素数,需要使用更高效的算法,比如Miller-Rabin素性测试。 ### 回答2: 判断一个是否是素数,无非就是将这个数从2到这个数-1都试一遍,看是否能被整除。但如果直接这么试一遍,复杂度就会达到O(n),而且如果这个数很大,就会变得非常慢。因此,我们有一些方法可以优化这个判断过程,从而达到更快速的判断素数的目的。 一种很常见的方法是:如果一个数x不能被2到根号x之间的任何数整除,那么它就是一个素数(根号x向下取整)。也就是说,只需要从2到根号x枚举一遍,看看x能否被其任何一个数整除即可。 下面是这个方法的实现: ```c++ int fun(int x) { if(x == 2) return 1; // 特2 if(x % 2 == 0) return 0; // 偶数一定不是素数 for(int i = 3; i <= sqrt(x); i += 2) { // 从3开始枚举,每次跳两个数(因为偶数已经判断过了) if(x % i == 0) return 0; // 如果能被整除,直接返回0 } return 1; // 如果不是2,不是偶数,也不被2到根号x之间任何一个数整除,那么就是素数 } ``` 在主函数,我们只需要输入一个整数,然后调用判断素数函数即可。如果这个数是素数函数返回1,否则返回0。我们可以根据函数返回值输出相应的信息: ```c++ int main() { int x; cin >> x; if(fun(x)) cout << x << "是素数"; else cout << x << "不是素数"; return 0; } ``` 综上所述,判断素数虽然看起来很简单,但实现起来还是有一些技巧的,需要注意一些细节。好在这些技巧我们可以通过认真思考和不断练习不断掌握,从而更好地应对各种算法与编程问题。 ### 回答3: 判断一个是否是素数,可以通过试除法来实现。试除法就是用2~sqrt(x)之间的数去除x,如果都不能除尽,那么x就是素数。 具体的实现方式如下: ```c++ #include <iostream> #include <cmath> using namespace std; int fun(int x) { if (x == 1) return 0; // 1不是素数 int i; for (i = 2; i <= sqrt(x); i++) { if (x % i == 0) { // 有一个数能整除x,说明x不是素数 return 0; } } return 1; // 执行到这里,说明x是素数 } int main() { int x; cout << "请输入一个整数:"; cin >> x; if (fun(x)) { cout << x << "是素数" << endl; } else { cout << x << "不是素数" << endl; } return 0; } ``` 以上代码fun函数用于判断一个是否是素数。特别地,1不是素数,如果输入x为1,直接返回0。在循环用2~sqrt(x)之间的数去试除x,如果能整除,说明x不是素数,直接返回0。如果执行到循环结束都不能整除x,说明x是素数返回1。 在主函数,先输入一个整数x,然后通过fun函数对x进行判断,如果返回1则说明x是素数输出相应信息。如果返回0,则说明x不是素数,同样输出相应信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值