永发信息网

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

答案:2  悬赏:40  手机版
解决时间 2021-01-21 05:41
  • 提问者网友:两耳就是菩提
  • 2021-01-20 14:03
C语言编写程序:三个素数乘积是105 求这三个素数。
最佳答案
  • 五星知识达人网友:鱼忧
  • 2021-01-20 15:36
分解质因数的程序:
#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;
}


全部回答
  • 1楼网友:神的生死簿
  • 2021-01-20 16:50

对于所有的素数,找出能够整除它的三个,应该就行了吧。
看看 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;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯