C++编程题 15
从键盘上输入一整数,并求该整数的质因子之和。如20=2*2*5,其质因子和为2+2+5=9.求c++程序...
从键盘上输入一整数,并求该整数的质因子之和。如20=2*2*5,其质因子和为2+2+5=9. 求c++程序
展开
3个回答
展开全部
#include<iostream>
#include<cmath>
using namespace std;
bool zhishu(int n) //判断是否为质数
{
if(n==1||n==2)
{
return true;
}
else
{
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0)
{
return false;
}
}
}
return true;
}
int fun(int a) //计算质因数之和
{
int sum=0;
cout<<"质因子为:"<<endl;
for(int i=2;i<=a;i++)
{
if(zhishu(a)) //如果a 本身就是质数,不用再分解,把它加到总和sum中去,退出for循环
{
cout<<a<<endl;
sum+=a;
break;
}
if(a%i==0) //如果a可分解,则分解
{
cout<<i<<" ";
sum+=i;
a/=i; //a变为除以质因数之后的值
i--;//i不要加1
}
}
return sum;
}
void main()
{
int a;
cout<<"input a:"<<endl;
cin>>a;
cout<<"sum="<<fun(a)<<endl;
}
#include<cmath>
using namespace std;
bool zhishu(int n) //判断是否为质数
{
if(n==1||n==2)
{
return true;
}
else
{
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0)
{
return false;
}
}
}
return true;
}
int fun(int a) //计算质因数之和
{
int sum=0;
cout<<"质因子为:"<<endl;
for(int i=2;i<=a;i++)
{
if(zhishu(a)) //如果a 本身就是质数,不用再分解,把它加到总和sum中去,退出for循环
{
cout<<a<<endl;
sum+=a;
break;
}
if(a%i==0) //如果a可分解,则分解
{
cout<<i<<" ";
sum+=i;
a/=i; //a变为除以质因数之后的值
i--;//i不要加1
}
}
return sum;
}
void main()
{
int a;
cout<<"input a:"<<endl;
cin>>a;
cout<<"sum="<<fun(a)<<endl;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询