北杳537 2021-10-30 14:06 采纳率: 100%
浏览 52
已结题

求解质因数及相应指数,铁子们看一看吧

为什么我输入28只能输出2:2
给定一个整数n,请给出它的质因数分解。

如28可以如下分解:28=2^2×7

请你输出的每个质因数以及该质因数的指数。

输入格式
一行,包含一个整数n(2≤n≤10000)。

输出格式
若干行,每行输出整数n的一个质因数,以及该质因数的指数,之间用一个冒号:隔开,且按质因数从小到大的顺序输出。

输入样例
28

输出样例
2:2

7:1

特殊提示
输入2:

2

输出2:

2:1
#include <stdio.h>
#include <math.h>
int main()
{
int n, i, A, k, B, C = 0, D = 0, g, j, p;
scanf("%d", &n);

for (i = 2; i <= n - 1; i++)
{
    if (n % i != 0)
        continue;

    for (k = 1; k <= i; k++)
    {
        if (i % k != 0)
            C = 1 + C;
    }

    A = i;
    for (j = 1; j < n; j++)
    {
        p = pow(A, j);
        if (n % p == 0)
            D = D + 1;
        continue;
    }

    if (C == i - 2)
        printf("%d%c%d\n", A, ':', D);
    
}
return 0;

}

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2021-10-30 21:42
    关注

    修改如下,供参考:

    #include <stdio.h>
    int main()
    {
        int n, i, A = 1, B, D;
        scanf("%d", &n);
        B = n/2;
        for (i = 2,D = 1; i <= B || n != 1; i++)
        {
            if (n % i == 0)
            {
                A = 0;  //质数标志
                n /= i;
                D = 1;
                while(n%i == 0)
                {
                    n /= i;
                    D++;
                }
                if(D >= 1)
                    printf("%d:%d\n",i,D);
            }
        }
        if(A)   printf("%d:%d\n",n,D);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月8日
  • 已采纳回答 10月31日
  • 创建了问题 10月30日

悬赏问题

  • ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
  • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)