C语言教程基础训练(二):如何寻找100以内的质数(素数)

1. 题目要求

寻找出100以内的所有质数(素数)。

2. 数学中如何判断是否为质数(素数)

首先,我们要清楚,什么是质数,或者说素数,下文我就直接叫质数了。
质数的定义: 质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。

3. 实现思路

首先,大家可以寻找一下质数与非质数的区别,以及质数的定义和特点。

3.1 思路一

这个思路是根据质数的定义产生的,即质数在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。换句话说只要出现了不是1和本身的因数 便可认定为不是质数。

3.2 思路二

这个思路是根据质数的特点 产生的,即质数只有两个因数,而非质数有2个以上的质数。换句话说,只要因数的个数大于两个便可认定为不是质数。

4. 代码实现

下面的代码是按照思路一进行编写的代码,大家可以尝试自己做一下思路二。下面!看代码!

#include <stdio.h>

#define TRUE 1
#define FALSE 0

#define MIN_NUM 1
#define MAX_NUM 100

//函数的声明
int is_prime(int num);
void find_prime();

/**
*主函数
*
*/
void main()
{
	find_prime();
}

/**
*判断 num 是否为质数
*
*/
int is_prime(int num)
{
	int factor = 1; 			//初始化第一个除数为1
	while(factor <= num)    	//判断除数是否小于被除数
	{
		if((num % factor) == 0) //判断是否可以整除
		{
			if(factor != num && factor != 1)    //如果除数不为1或者自己本身,则不是质数,返回false
			return FALSE;
		}
		factor++;
	}
	return TRUE;
}

/**
*寻找1-100之间的所有质数
*
*/
void find_prime()
{
	int i = MIN_NUM;
	int count = 0;				//为了每5个质数输出为1行,定义变量用以记录质数的数量
	for( ; i <= MAX_NUM ; i++)
	{
		if(is_prime(i) == 1)    //判断是否为质数
		{
			printf("%d\t",i);   //为了美观,我使每个质数后跟水平制表符
			count++;
			if(count != 0 && count % 5 ==0) //为了输出美观,我使其每行只输出5个质数
			{
				printf("\n");
			}
		}
	}
}

5. 运行结果

1       2       3       5       7
11      13      17      19      23
29      31      37      41      43
47      53      59      61      67
71      73      79      83      89
97
Process finished with exit code 0

6. 思考

这个题对刚开始的初学者可能有些难度,需要反复理解,并尝试写出属于自己的代码,但是上文给出的代码仍有很大的改进空间,大家可以在理解后,尝试者对这个质数的判断算法进行改进~ 大家可以尝试以下使用思路二去重新做一下! 欢迎大家留言评论哦~

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值