输出2-100素数,并统计个数

作为一个C语言新手,分享自己做的的一道经典编程题

1.素数的定义

首先必须要了解什么是素数,素数:大于 1 的自然数,且只能被 1 和它本身整除。且0和1不是素数

2.设计思路

首先肯定要定义一个被除数变量i,并且用循环对他进行累加。

再定义一个除数变量j,j<i,对j进行累加,范围是2到i的前一位,为什么是前一位,因为素数只能被1和本身整除,把这两个数排除在外,我们可以做一个标记量flag=1,用if结构执行当i能被j整除时,把flag置为0,再用if语句判断flag是否变成0,为0就输出为素数,并且再定义一个计数量count进行累加。当然j的范围可以在小一点,提高运行效率,引入数学函数sqrt。但这里主要讨论思路。

代码如下:

#include<stdio.h>
int main()
{
	int n ;//定义被除数
	int i, flag;//定义除数和标记量
	int count = 0;//定义统计素数的个数
	printf("1-100素数有:");
	n = 2;//1不是素数所以从2开始
	while (n < 100)
	{
		i = 2;
		flag = 1; //标记为1
		while(i<n)//不包括被除数本身
		{
			if (n % i == 0)
			{
				flag = 0;	//如果有除了1和本身之外的除数标记改变			
			}
			i++;			
		}
		if (flag == 1)
		{
			printf("%d ", n);//输出素数
			count++;//计数累加
		}
		n++;
	}printf("\n");
	printf("素数的个数是%d", count);
	return 0;
}

在VS2022上的运行结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值