判断质数复习与分解质因数

TIPS

1. 之前我们讲到比方说要得到一个整数(十进制形式)的每一位数字,就需要把这个整数先%10得到最低位的数字,然后呢再把这个整数/10更新一下,然后呢就这么循环往复直到最终这个不断更新的整数为0跳出循环。那如果这个整数是个负数,要得到它每一位数字,就先把它转化为正数,也就是给它乘以 -1。

2. 质数与素数这两个概念没有区别,都是指只有1和它本身这两个因数的数。

3. 1不是质数,2是最小的质数。

分解质因数介绍

1. 首先得知道什么是质因数,如果一个数的因数是质数,那么这个因数就是它的质因数,比如:5的因数有1和5,其中因数5是一个质数,所以因数5是5的质因数;28的因数有4和7,其中因数7是一个质数,所以因数7是28的质因数。

2. 那什么又是分解质因数呢?把一个合数用质数相乘的形式表示出来,就叫做分解质因数。在这边就需要注意两点:
1. 合数可以分解质因数,而质数不能分解质因数,因为质数只能等于1*本身这种形式,而1不是质数。
2. 分解质因数不是一个具体的数,而是把一个合数分解成几个质数相乘的形式的过程。
分解质因数针对的对象是合数,而最终呈现的是把合数表示成几个质数相乘。

分解质因数数学步骤

1. 先让num(得是一个合数)除以最小质数2.

2(1). 如果能够整除,就把商再继续除2(并且这时候说明那个2已经被分解出来)

2(2). 如果不能够整除,就原数除以下一个大的质数,(并且这时候说明那个2不能被分解出来)

3.  一般来说,我们都是一开始去除以最小的质数2的,然后一旦除不通,就除以接下来大一点的质数,质数从小到大排列为:2,3,5,7,11........... 

4,除到商也是质数的时候结束,这时候就已经分解质因数分解完了。 

以上就是分解质因数在数学上的步骤 

分解质因数举例

C语言实现步骤

1. 先输入一个数,判断这个数是不是质数,如果是的话,返回1,否则就返回0。

#include <stdio.h>
#include <math.h>
int Div(int num)
{
	int i = 0;
	for (i = 2; i <= sqrt(num); i++)
	{
		if (num % i == 0)
		{
			return 0;
		}
	}
	return 1;
}
int main()
{
	int num = 0;
	while (scanf("%d", &num) != EOF)
	{
		int ret = Div(num);
		if (ret == 0)
		{
			printf("这已经是一个质数了\n");
		}
		else
		{
            //具体实现分解质因数
		}
	}
}

2. 接下来就是对合数进行分解质因数。

虽然在数学步骤的角度上,(如果条件允许的话)整除不了的话,是依次除质数(2.3.5.7.....),但是在机算机代码的角度上,去依次除2.3.4.5.6.7........这更为方便与容易实现。事实上,两者之间效果没有任何区别。因为你一旦不能整除2,4也就别想,6也就别想,大概道理就这么一个意思。

#include <stdio.h>
#include <math.h>
int Div(int num)
{
	int i = 0;
	for (i = 2; i <= sqrt(num); i++)
	{
		if (num % i == 0)
		{
			return 0;
		}
	}
	return 1;
}
int main()
{
	int num = 0;
	while (scanf("%d", &num) != EOF)
	{
		int ret = Div(num);
		if (ret == 1)
		{
			printf("这已经是一个质数了\n");
		}
		else
		{
			printf("%d=", num);
			int i = 2;
			while (Div(num) == 0)
			{
				if (num % i == 0)
				{
					printf("%d*",i);
					num /= i;
				}
				else
				{
					i++;
				}
			}
			printf("%d\n",num);
		}
	}
}

 效果如下:

以上就是对合数分解质因数的过程,欢迎询问,批评与指正。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

立志成为软件工程师

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

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

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

打赏作者

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

抵扣说明:

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

余额充值