计算质因子只有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]);
    }

阅读更多
文章标签:
个人分类:
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭