题目的描述:
输入一个整数,输出其因子表达式:
#include<stdio.h>
#include<math.h>
int isprime(int num)
{
int i;
for(i=2;i<=sqrt(num);i++)
{
if(num%i==0)
return 0;
}
return 1;
}
int main()
{
int n,i,temp;
scanf("%d",&n);
temp=n;
for(i=2;i<=temp;)
{
if(temp%i==0&&isprime(i))
{
printf("%d*",i);
temp=temp/i;
if(temp%i!=0)
i++;
}
else
i++;
}
printf("\n");
return 0;
}
//若题目中对输入输出有如下图的要求:
那么对于上述满足要的代码为:
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#define N 10001
using namespace std;
int n;
int a[N],b[N];
void calculate(int x,int y)
{
if(x==0||y>x)
return;
while(x%y==0)
{
x/=y;
a[y]++;
}
calculate(x,y+1);
}
int main()
{
bool flag=false;
cin>>n;
calculate(n,2);
for(int i=2;i<=n;i++)
{
if(flag&&a[i])
cout<<"*";
if(a[i])
flag=true;
if(a[i]==1)
cout<<i;
else if(a[i]>1)
cout<<i<<"^"<<a[i];
}
cout<<endl;
return 0;
}
注:因子若是可以写作a的b次方,记a^b 输入样例为:100
输出样例为:2^2*5*5