欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > 每日一题(小白)模拟娱乐篇15

每日一题(小白)模拟娱乐篇15

2025/4/18 21:03:58 来源:https://blog.csdn.net/weixin_65550131/article/details/147012723  浏览:    关键词:每日一题(小白)模拟娱乐篇15

本题计算100的阶乘有多少公约数,可以先计算出100的阶乘,然后使用计算公约数的方法计算公约数。那么我们来分析一下如何计算公约数,举个例子6的公约数有1*6;2*3;共有四个公约数。因为数学的学习我们知道一个数的公约数肯定小于或者等于这个数的一半,必定有另一个大于这个数的一半与之凑成一组公约数。所以可以稍微优化一下,判断一半的数字多++就行。

做法👇

①计算出100的阶乘

②编写计算约数个数的方法(函数)注意:必须测试自己的代码是否可用具有普遍性,找出不合理的地方进行修改完善

③计算100阶乘的约数并且输出

	public static void main(String[] args) {Scanner scanner =new Scanner(System.in);int x=scanner.nextInt();BigInteger b=new BigInteger("1");while (x>1) {BigInteger a=new BigInteger(String.valueOf(x));b = b.multiply(a);x--;}System.out.println(b);scanner.close();}
	public static void main(String[] args) {Scanner scanner =new Scanner(System.in);int x=scanner.nextInt();int count=0;for (int i = 1; i <= Math.sqrt(x); i++) {//只计算到开方的取小if (x%i==0 && i*i!=x) {count+=2;}if (i*i==x) {//未考虑的地方count++;}}System.out.println(count);scanner.close();}

暴力解法数据量非常之恐怖,继续改进- -

接下来我们则使用质因数分解的方法:在探讨数的约数个数时,我们可以通过分解质因数来更深入地理解。例如,假设一个数可以表示为A×B×C的形式,那么这个数的约数个数可以通过计算A、B、C各自质因数分解后的指数加一再相乘得到。具体来说,如果A、B、C分别可以分解为质因数的乘积形式,如A=p1^a1,B=p2^a2,C=p3^a3,那么这个数约数个数为(a1+1)×(a2+1)×(a3+1)。

这种计算方法不仅适用于简单的乘积形式,还能扩展到更复杂的数。对于一个较为复杂的数,比如D=p1^a1×p2^a2×p3^a3×...×pn^an,其约数个数就为(a1+1)×(a2+1)×...×(an+1)。这里p1,p2,...,pn代表不同的质数,而a1,a2,...,an则是这些质数在该数分解质因数时的指数。

①循环1~100,求出各个值的质因子个数存储在数组中

②循环数组,将每一个质因子个数+1再相乘得到结果

注意数字的范围

代码如下👇

	public static void main(String[] args) {int[] num=new int[101];//分解质因子个数long count=1;//结果for (int i = 1; i <= 100; i++) {//1到100的阶乘int m=i;for (int j = 2; j*j <= m; j++) {while (m%j==0) {num[j]++;m/=j;}}if (m>1) {num[m]++;}}for (int i = 0; i < num.length; i++) {if (num[i]>0) {count*=(num[i]+1);//公式直接套}}System.out.println(count);}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词