算数基本定理+容斥原理(的应用)

本文介绍了算术基本定理(唯一分解定理),阐述了如何利用该定理解决计算自然数因子个数的问题。虽然传统方法可能导致超时,但文章提供了C语言代码作为示例。同时,提到了一个相关的例题,即求小于n且与n互质的数的数量,其中n不超过10亿。
摘要由CSDN通过智能技术生成

算术基本定理(唯一分解定理)

一句话:
    
任何大于1的自然数,都可以唯一分解成有限个质数的乘积

一、求一个数有几个因子。比如求9有3个因子,就是1、3、9,  原因是1*9=9  3*3=9

这种方法一般都会超时

C语言的代码如下:

//求一个数有几个因子
#include<stdio.h>
#include<math.h>
int num(int n)
{
	if(n==1) return 1;
	int count=2;
	for(int i=2;i*i<=n;i++)
	{
		if(n%i==0)
		{
			if(i*i==n&&n/i==i)//如果两因子相同,则加1 
				count++;
			else count+=2; 
		}
	}
	return count;
}
int main()
{
	int n;
	scanf("%d",&n);
	printf("%d\n",num(abs(n)));//以防是负数,带上abs() 
	return 0;
}

二、求一个数的所有因子(不包括自身)的和

这种方法一般都会超时

//求一个数的所有因子(不包括自身)的和
#include<stdio.h>
int sum(int x)
{
	int count=0;
	for(int i=1; i<=x/2; i++)//循环判断条件是 <=x/2 而
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值