编写函数,输出一个正整数的素数分解式。主函数的功能为输入若干正整数(大于1),输出每一个数的素分解式。素数分解式是指将整数写成若干素数(从小到大)乘积的形式。
例如:
20=225
36=2233
53=53
输入样例:
6 10 24 100 1000 1001 1002001
结尾无空行
6=23
10=25
24=2223
100=2255
1000=222555
1001=71113
1002001=77111113*13
结尾无空行
——————————————————————-
码如下:
#include <iostream>
using namespace std;
bool abc(long long n)
{
if(n == 1||n==0)
return false;
for(long long i=2; i*i<=n; ++i)
{
if(n%i == 0)
return false;
}
return true;
}
void f(long long n)
{
if(abc(n)==1)
cout<<n<<endl;
else
{
for(long long i=2;i*i<=n;i++)
{
if(n%i==0&&abc(i)==1)
{
cout<<i<<"*";
n/=i;
break;
}
}
f(n);
}
}
int main()
{
long long a;
while(cin>>a)
{cout<<a<<"=";
f(a);
}
}
几个槽点:
1.输入不确定多个数据时,可用
while(cin>>a)
但我在第一次的时候多加了点东西
while(cin>>a)
{
cout<<a<<"=";
f(a);
return 0;
}
这样导致一行就崩,改了就好;
2.分解的那一部分感觉还算顺畅,把素数判断摘出去效率会快很多;。
完结撒花