算法提高 8-1因式分解

算法提高 8-1因式分解  
时间限制:10.0s   内存限制:256.0MB
    
问题描述
  设计算法,用户输入合数,程序输出若个素数的乘积。例如,输入6,输出2*3。输入20,输出2*2*5。
样例
  与上面的样例输入对应的输出。
  例:

数据规模和约定
  输入数据中每一个数在int表示范围内。
 
整数分解。
#include <iostream>
#include <cstdio>
#include <map>

using namespace std;

int cou=0;

map<int,int> prime_factor(int a){
    map<int,int> res;
    for(int i=2;i*i<a;i++){
        while(a%i==0){
            ++res[i];
            a/=i;
            cou++;
        }
    }
    if(a!=1){
        res[a]++;
        cou++;
    }
    return res;
}

int main()
{
    int a;
    scanf("%d",&a);
    map<int,int> ans=prime_factor(a);
    int jud=0;
    for(int i=2;i<=a;i++){
        if(jud==0){
            if(ans[i]>0){
                printf("%d",i);
                ans[i]--;
                jud=1;
            }else{
                continue;
            }
            while(ans[i]>0){
                printf("*%d",i);
                ans[i]--;
            }
        }else{
            while(ans[i]>0){
                printf("*%d",i);
                ans[i]--;
            }
        }
    }
    return 0;
}

 

全部评论

相关推荐

想干测开的tomca...:这份简历是“大一新生硬凹资深后端”的典型反面教材,槽点离谱到能让面试官直接笑出声: ### 1. 「年龄+入学时间」和项目复杂度完全脱节,可信度直接归0 你2024年7月才入学(现在刚读了1年多),19岁的大一新生,能把Vue3+Spring Boot+ShardingSphere+K8s+AI这些技术全塞进两个项目里?别说实际开发,光把这些技术的文档看完都得半年——这不是“能力强”,是“把招聘JD里的技术词全抄过来造假”,明摆着没碰过实际代码
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务