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);
#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;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯