计算质因子只有2,3,5,7的数的因子有几个

题目

一个只有2、3、5或7的质数的数被称为一个不起眼的数。 第1、2、3、4、5、6、7、8、9、10、12、14、15、16、18、20、21、24、25、27、…… 显示前20个不起眼的数字。

现在给出一个简单的数字,请编写一个程序来计算这个简单数字的因数个数。 例如,4是一个不起眼的,它有3个因数(1,2,4);12有6个因数。

我的想法:分别算出来一个数是2,3,5,7的几次方,再将次数相乘,然后发现结果不对,好像只有一个质因子的时候这么干不行,因为只有一个你没法和人家匹配啊,于是我就把只有一个质因子的情况单独讨论,结果还是不对,好像还落了这个数本身(不和其他数匹配的情况)于是又把每个质因子的次数再加在一起,最后再加一(本身1就是一个因子),结果都对,可是还是wa........,真烦人。

实际答案还是先算出来 一个数是2,3,5,7的几次方,但要将他们的次数分别加一再相乘(即把0次方也算在里面),这样就可以避免只有一个质因子时要单独算的情况,也不用最后再加一了。

主要代码如下
 while (scanf("%I64d", &n), n)
    {
        Int num[4] = {2, 3, 5, 7};
        int ans[4] = {1, 1, 1, 1};//由在算的时候没有把0个2,0个3,0个5或者0个7的情况计算进去,所以一开始就加上
        for (int i = 0; i < n; i++)
        {
            while (n != 1 && n % num[i] == 0)//算出2,3,5,7的个数
            {
                ans[i]++;
                n /= num[i];
            }
        }
        printf("%d\n", ans[0] * ans[1] * ans[2] * ans[3]);
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值