永发信息网

C语言编写程序:三个素数乘积是105 求这三个素数。

答案:2  悬赏:40  手机版
解决时间 2021-01-21 05:41
C语言编写程序:三个素数乘积是105 求这三个素数。
最佳答案
分解质因数的程序:
#include
#include
int main()
{int x,i,st=1;
scanf("%d",&x);
printf("%d=",x);
for(i=2;i<=sqrt(x+1);i++)
{while(x%i==0)
 {if(!st)printf("*");
    else st=0;
  printf("%d",i);
  x/=i;
 }
}
 if(x>1)printf("*%d",x);

 printf("
");return 0;
}


全部回答

对于所有的素数,找出能够整除它的三个,应该就行了吧。
看看 105 / 2 不能整除
105 / 3 能整除,除之后结果是35,-> 输出3 ()
35 / 4 不能整除
35 / 5 能整除,除之后结果是7,-> 输出5
7 / 6 不能整除
7 / 7 能整除,除之后结果是1,-> 输出7,结束#include "stdio.h"
#include "stdlib.h"
#include "math.h"
// 判断是不是素数
int isPrime(int num) {
    int N = sqrt(num); // 只需要判断到根号num就可以
    for(int i=2; i<=N; i++) {
        // 如果num 能被[2, 根号num]中的某个数整除,则不是素数
        if(num % i == 0) {
            return 0;
        }
    }
    return 1;
}
// 从num+1开始往后找下一个素数,比如2的下一个素数是3,7的下一个素数是11
int nextPrime(int num) {
    do {
        num++;
    } while(!isPrime(num));
    return num;
}
int main() {
    int num = 105;
    int prime = 2;
    while(num != 1) {
        // 如果num能被某个素数整除,就输出这个素数,然后更新num的值
        if (num % prime == 0) {
            printf("%d", prime);
            num = num / prime;
        } else {
            // 不能整除时再找下一个素数
            // 因为比如24可以被2整除很多次,能整除时就继续用2去除
            prime = nextPrime(prime);
        }
    }
    
    return 0;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
苹果手机se
生狗鞭怎么清理
近5年菜市场食品物价对比表
缕的组词有哪些词语
婴儿一个月长多少才正常
合肥的汉庭酒店和如家哪家比较好啊?
碗阅读答案
土嗨是什么意思
购买二手车,卖方车贷未还清
六年级习作三火烧肉的作文
I seemed to be pretty good reading his lip
什么叫受体与配基,它们的主要作用方式及特点
谁手机换过屏幕啊,能不能告诉下在哪换的,多
保暖内衣裤子怎么分前后
有人强行要你给孕妇让下铺,你会同意吗
推荐资讯
汽油倒在人身上要紧吗
老年人八十岁能办寿生吗
k39次列车途经沈阳北站还是南站
利用旋转设计图案
奔驰显示adblue可行驶距离10是什么意思
公狗能辨认出自己的孩子么
想知道佑富自动化的成丰地区有销售磁翻板液位
老公没敲开门,怀疑老婆,在家里四处找人,这样
利用量筒和水可以测量实心小金属块的体积,以
我想找几个有关志存高远,崇尚荣誉的古文句子
2016中联收获新疆一8收割机多少钱
2011年东风天龙雷诺340是不是国三车
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?