题解 | #质数因子#

质数因子

https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607

#include <stdio.h>
#include <math.h>
#include <limits.h>

int isPrime(int num);
int FindLeastPrime(int min, int num);
void showAllPrimeFactor(void);

int main() {
    int a, b;
    #if 0
    while (scanf("%d %d", &a, &b) != EOF) { // 注意 while 处理多个 case
        // 64 位输出请用 printf("%lld") to 
        printf("%d\n", a + b);
    }
    #endif
    //printf("INT_MAX=%lld",INT_MAX);//=2147483647~2*10^9 20亿
    showAllPrimeFactor();
    return 0;
}

//一些可能的输入和输出
//1-----> 没有
//2-----> 2
//3---->3
//4-----> 2 2
//18 2 3 3
//200 2 2 2 5 5
//常见的质数:2, 3 ,5, 7, 11
void showAllPrimeFactor(void)
{
    int InputNum = 0;
    int testNum = 2;
    scanf("%d", &InputNum);
    #if 0
    if((InputNum<1)||(InputNum > 2*pow(10,9)+14))
    {
        printf("input error!\n");
        return;
    }
    #endif
    while(InputNum!=1)
    {
        //1.准备一个数n,用于判定这个数是不是质数。这个数不断增大。
        //2-1.如果n是质数,用InputNum%n,如果结果是0,表明n是质因数
        //打印出这个n,循环。直到InputNum%n!=0
        
        if(isPrime(InputNum))
        {
            printf("%d ",InputNum);
            InputNum = 1;
        }
        else if(isPrime(testNum) && (InputNum%testNum==0))
        {
            do
            {
                InputNum /= testNum;
                printf("%d", testNum);
                printf(" ");
            }while(InputNum%testNum==0);
        }
        else //3.如果n不是质因数,让n增加
        {
            testNum++;
        }
    }
}

/*
*@功能:判断一个数是不是质数
*@返回值:0--不是质数 1--是质数
*/
int isPrime(int num)
{
    if(num==1)
    {
        return 0;
    }
    for(int i=2; i<=(int)sqrt(num); i++)
    {
        if((num%i)==0) return 0;
    }
    return 1;
}

全部评论

相关推荐

缓解焦虑的最好方法是回家。鼠鼠昨天上午考完了本科阶段的最后一场考试,大概率考得稀烂,但是没多想,考完立马收拾行李,坐上了提前约好的顺风车飞奔回家。虽然家和学校很近,只有一百多公里的路程,但距离上次回家也已经有三四个月了。每次想回家,期间总有考试、毕业设计、面试、实习等等各种各样的原因,没办法回去,待在学校和公司的每一天也都充斥着无形的压力和焦虑。现在终于完成了答辩,考完了试,公司那边也请了假,是时候回去一趟了。没有提前通知爸妈,想给他们一个惊喜。下午提前到了家,他俩还在上班,只好让外公外婆来给我开门。因为我的回家,晚上外婆在厨房格外忙碌,做了满满一大桌子菜,填饱了我天天吃外卖的肚子。晚上也没空...
梦想是成为七海千秋:取决于家庭吧?其实回家更焦虑了,每天起床父母都问实习找好了没简历投递了没今天有没有面试,但是又没有什么结果,玩两下手机父母就会说你看你啥也没找到为什么天天就知道刷手机,怎么不去学习…我现在就希望我能永远在外面实习,报喜不报忧,等拿到一个好offer再回家
点赞 评论 收藏
分享
那一天的Java_Java起来:他本来公司就是做这个的,不就是正常的游戏客户端和服务器开发,软硬件联动,有啥恶心不恶心的,提前告诉你就是怕你接受不了,接受不了就没必要再往后走流程浪费时间,虽然这公司是一坨。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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