用C语言实现求质数/素数(第三天:顺序、选择、循环等语句的应用)【每天进步一点点-小白学习笔记】

题目概述:

        1. 请实现一个函数,对于给定的整型参数 n,该函数能够把自然数中, 小于 n 的质数/素数, 从小到大 打印出来。

示例:

输入:n = 10
输出:2 3 5 7

        2.请实现一个函数,对于给定的整型参数 n,该函数能够 从小到大 ,依次打印出自然数中 最小 的 n 个质数/素数。

示例:

输入:n = 10
输出:2 3 5 7 11 13 17 19 23 29

提示:

  •  素数指在正整数范围内,大于1且只能被1和自身整除的数 
  •  采用多种方式求解,尽可能优化算法 
  • 1 < n <= 1000

解题思路:

        求素数是基本上每个刚接触编程的小白都可能面对的一道经典题,其资历也可以算一位老精英怪了,以至于许多人都会拿其来练练手,当然我也是。刚好下午刷博客的时候看了一篇《素数求解的n种境界》,感觉有些“吃撑了”,正好用自己的理解也尝试打打这位资深精英怪来“消消食”。

        素数求解我目前能想到的方法就两种:试除法与筛除法

   方法①:试除法

        试除法是基本绝大多数人都能想到的一种方法,当然我也是第一时间先想到了这个。

        简单来说就是从2开始不断对小于该数的数字取模(求余),若余数一直到试除完所有正整数都不为0,则为质数/素数,并打印输出。因此可以写出代码如下:

// 题1:输入正整数n,求n以内的素数
int count, n;
printf("请输入正整数n:");
scanf("%d", &n);
printf("%d以内的质数有:2 ", n);
count = 1;  // 计入最小素数2
for (int i = 3; i <= n; i++) {
    int j = 0;
    for (j = 2; j < i; j++) {
        if (i % j == 0)
            break;
    }
    if (j == i){
        printf("%d ", i);
        count++;
    }
}
printf("\n共%d个",count);
// 题2:输入正整数n,求n个最小素数
int count, n;
printf("请输入正整数n:");
scanf("%
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值