《c语言入门题目19》判断一个数是不是质数(素数)

 前言:(内容仅供分享和参考):

什么是质数: 质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数(规定1既不是质数也不是合数)。========================================================================

题目:编写编程,判断在指定范围内的数是不是质数(素数)

代码:(用到的软件:VisualStudio)

(用Dev-C++的把scanf_s换成scanf就行了)

1.如何判断是不是素数

这里用到的判断方法是一个个去除,比如让5分别处以1,2,3,4,5,如果该数能被该数范围内的数求余为0,说明该数有能被除了1和它自身外的其他自然数整除,所以不是素数。 

int prime(int n)
{
	if (n < 2) return 0;//根据质数定义,排除特殊情况
	int flag = 1;//定下一个标识
	for (int i = 2; i < n; i++)
	{
		if (n % i == 0)
//如果能被取余为0,这输出0,直接跳过,因为该数已经不是质数了,比如4,4%2=0;
//所以可以直接break跳过这一个数的判断,直接进入下一个
//如果都判断完了,都没有取余到0,说明该数只能被1和他本身整除,是质数
//还记得一开始下的标识是1吗,如果没有进入到if语句的执行条件,那么最后的返还结果就是1
		{
			flag = 0;
			break;
		}
	}
	return flag;
}

如果能被取余为0,这输出0,直接跳过,因为该数已经不是质数了,比如4,4%2=0;
所以可以直接break跳过这一个数的判断,直接进入下一个。如果都判断完了,都没有取余到0,说明该数只能被1和他本身整除,是质数(当然一开始要排除特殊情况,比如负数和1)
还记得一开始下的标识是1吗,如果没有进入到if语句的执行条件,那么最后的返还结果就是1,

输入到print_prime函数的if中判断为真(因为是1,假就是0),接着输出打印这一质数即可。

2.用指针去修改内存,达到一个可以让用户在输入窗口修改范围的效果。

(这样就不用老是在编译器里改了)

void print_prime(int* a, int* b)//定义指针a,b方便修改内存变量,到达可供外部输入的效果
{	
	printf("请输入要判断是否是质数的范围,用空格隔开两个数:");//提示语
	scanf_s("%d%d", a, b);
	for (int i = *a; i <= *b; i++)//开始循环
	{
		if (prime(i))//应用判断质数函数
		{
			printf("%d是质数。\n", i);//将范围内的质数答应出来
		}
	}
}

 全部代码:

#include<stdio.h>
int prime(int n)
{
	if (n < 2) return 0;
	int flag = 1;
	for (int i = 2; i < n; i++)
	{
		if (n % i == 0)
		{
			flag = 0;
			break;
		}
	}
	return flag;
}
void print_prime(int* a, int* b)
{	
	printf("请输入要判断是否是质数的范围,用空格隔开两个数:");
	scanf_s("%d%d", a, b);
	for (int i = *a; i <= *b; i++)
	{
		if (prime(i))
		{
			printf("%d是质数。\n", i);
		}
	}
}
	int main()
	{
		int a=0, b=0;
		print_prime(&a,&b);
		return 0;
	}

========================================================================

结果图:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alueaxten(上学版)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值