初学者的C编程--用三种循环写出1~10的所有素数

前言

初学C语言,请大佬多提宝贵意见,感激不尽。欢迎各位初学者前来交流。

do……while循环

# include <stdio.h>

int main(void)
{
	int i, j, sum=0, ge=0;
	i=3;

	do
	{
		j = 2;
		do
		{
		
			if(i%j == 0)
			{
				printf("%i不是素数\n",i);
				break;			
			}
			else if(j == (i+1)/2)
			{
				printf("%d是是是是是是是是是是素数\n",i);
				sum += i;
				ge += 1;
			}
			++j;
		}
			while((j-1) <= (i+1)/2);
		
		
		i++;
	}
	while(i < 101);
	
	printf("sum = %d\n",sum+2);
	printf("ge = %d\n",ge+1);

	return 0;
}

do……while的输出结果:
在这里插入图片描述

for 循环语句(1)“2”无输出

若要用这种方法输出“2”,将j<=(i+1)/2改为j<i即可

# include<stdio.h>

int main(void)
{
	int i;	//外循环,1~100数值
	int j;	//内循环,变量标志
	int sum=0;	//素数的和
	int ge=0;		//素数的个数
	int k;		//判断的范围
	printf("请输入数值,以判断其从2到他的范围内的素数\n");
	scanf("%d",&k);

	for(i=3; i <= k; i++)	//从3开始,2由人工计算输入。
	{
		for (j=2; j<=(i+1)/2; j++)		//若是将j<i则可以判断i = 2的情况。
		{
			if (i%j == 0)
			{
				printf("%d不是素数\n",i);
				break;
			}
			else if (j == (i+1)/2)		//如果到最后一个数值还是有余数的话,才能得出素数的结论
			{
				printf("%d是是是是是是是是是是素数\n",i);
				sum += i;
				ge++;
				
			}
		
		}
	
	}
	printf("sum = %d\n",sum+2);		//程序中“2”没有判断,手动输入。
	printf("ge = %d\n",ge+1);

	return 0;
}

输出结果:
在这里插入图片描述

for 循环语句(2)“2”输出

# include<stdio.h>

int main(void)
{
	int i;	//外循环,1~100数值
	int j;	//内循环,变量标志
	int sum=0;	//素数的和
	int ge=0;		//素数的个数
	int k;		//判断的范围
	int flag;	//非素数标志
	printf("请输入数值,以判断其从2到他的范围内的素数\n");
	scanf("%d",&k);

	for(i=2; i <= k; i++)	//从3开始,2由人工计算输入。
	{
		flag = 0;
		for (j=2; j<=(i+1)/2; j++)		//若是将j<i则可以判断i = 2的情况。
		{
			if (i%j == 0)
			{
				printf("%d不是素数\n",i);
				flag = 1;
				break;
			}
			else if (j == (i+1)/2)		//如果到最后一个数值还是有余数的话,才能得出素数的结论
			{
				break;				
			}
		
		}
		if(flag)
			continue;
		printf("%d是是是是是是是是是是素数\n",i);
		sum += i;
		ge++;

	}
	printf("sum = %d\n",sum);		//程序中“2”没有判断,手动输入。
	printf("ge = %d\n",ge);

	return 0;
}

运行结果:
在这里插入图片描述

while 语句

int main(void)
{
	int i=3, j, sum=0, ge=0;	//sum:素数和;ge:素数个数;i外循环;j内循环。

	while(i < 101)
	{
		j = 2;
		while(j <= (i+1)/2)				
		{
			if(i%j == 0)					//错误原因:
			{								//-----------------------------------------------------------------------------
				printf("%d不是素数\n",i);	//!!!内嵌的循环语句中,每次i值变化时的循环分析,j的值没有从j=2开始重新分析计算
				break;						//------------------------------------------------------------------------------
			}
			else if(j == (i+1)/2)
			{
				printf("%d是素数\n",i);
				sum += i;
				ge += 1;
			
			}
			++j;	//++j在当前循环语句内,在条件判断语句外。
		}
	
		++i;
	
	
	}
	printf("sum = %d\n", sum+2);
	printf("ge = %d\n", ge+1);

	return 0;
}

/*
---------------------------
总结:
内嵌循环时,一定要将内嵌循环的循环计数标志值“从头”开始计数。
---------------------------
*/

运行结果:
在这里插入图片描述

初学C语言,请大佬多提意见。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值