解题思路:

例子分析: 66%2==0  那么就输出2*   

                  66/2=33   33%2!=0  33%3==0  输出3空格

                  33/3=11  显然11%11==0   此时 11/11=1 输出11

                  由此可知n=2时 不满足66相除2后的数33,就自增n++   n=3 以此类推



注意事项:n不满足两个条件才自增1:不是素数,x不能被n整除


参考代码:

#include<iostream>
using namespace std;
int ss(int x){//素数判断方法
    int i;
    if(x==1 || x==2 )
      return x;
    for(i=2;i<x;i++){
        if(x%i==0)
            return 0;
    }
    return x;
}
int main()
{
    int  x,n,k,b=0;
    while(scanf("%d",&x)!=EOF)
    {
        n=2;
        while(x!=1)
        {
            if( x%n==0 &&ss(n))//满足n是素数就相除 并且还要能与x整除
            {
                x=x/n;//相除
                printf("%d ",n);
				b++;
 
            }//不满足自增1
            else
                n++;
        }
        printf("\n%d",b);
    }
    return 0;
 
}


点赞(1)
 

0.0分

2 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 1 条评论

易恒临东 4年前 回复TA
作者大大,你弄的while(scanf) 导致了,只能对第一次输入的数进行质因数个数进行正确统计,假如再次输入数字进行质因数判断,会累加。再有,我有一个疑问,一个数的因数是否包含它本身,质因数是否包含它本身?你的程序包含,但是我好像记得因数不包括自己