资源限制
时间限制:10.0s 内存限制:256.0MB
问题描述
设计算法,用户输入合数,程序输出若个素数的乘积。例如,输入6,输出23。输入20,输出22*5。
样例
与上面的样例输入对应的输出。
例:
数据规模和约定
输入数据中每一个数在int表示范围内。
解题思路:
首先要使用while循环,从最小的素数开始,循环进行除操作,如果余数为0,就继续进行相关操作,素数的判断过程可以用函数来表示,当然我在测试后发现不用判断也是可以的,代码如下:
#include<bits/stdc++.h>
using namespace std;
bool judge(int n){
int flag = true;
for(int i = 2; i * i <= n; i ++){
if(n % i == 0){
flag = false;
break;
}
}
return flag;
}
int main(){
int n;
cin >> n;
int i = 1;
bool flag = true;
while(n != 1){
i ++;
while(judge(i) && n % i == 0){
n /= i;
if(flag){
cout << i;
flag = false;
}else{
cout << "*" << i;
}
}
}
return 0;
}