用isprime的C++编写分解质因数的程序

发布网友 发布时间:3小时前

我来回答

1个回答

热心网友 时间:19分钟前

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

int isPrime(int n) { // n是质数返回1,否则返回0
int flag = 1; // 标志
if(n < 2) return 0; // 质数大于1
for(int i = 2; i <= sqrt(n) && flag; ++i) {
if(n % i == 0) flag = 0; // 能整除,就不是质数
}
return flag;
}

int main() {
int n,an,flag;
while(1) {
printf("输入一个整数(0 -- 65535):");
if(scanf("%d",&n) != 1 || n < 0 || n > 65535) {
printf("数据错误。\n");
fflush(stdin); // 刷新键盘输入缓冲区用以清除非数字字符响应scanf("%d",&n)
continue;
}
printf("%d = ",n);
flag = 1; // 输出格式控制标志
for(int i = 2; i <= n; ++i) {
if(n % i == 0 && isPrime(i)) {
if(flag) { // 第一个质因子的输出格式
printf("%d",i);
flag = false;
}
else printf(" * %d",i); // 其他质因子的输出格式
n /= i; // 剔除已经求得的质因子
--i; // 应对相同质因子
}
}
printf("\n1、继续,0、结束:");
scanf("%d",&an);
if(an == 0) break;
}
return 0;
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com