作业4
/*
// 一个数若恰好等于它的因子之和,这个数为“完数”。例如6的因子为1,2,3,而6=1+2+3,因此6是“完数” 。
//求找出1000之内的前两个完数,并换行输出因子
#include<iostream>
using namespace std;
int main()
{
int n, i;
for (n = 6; n <= 1000; n++)
{
int sum = 0;
for (i = 1; i < n; i++) if (n%i == 0)sum = sum + i;
if (sum == n)
{
cout << n << endl;
for (i = 1; i < n; i++)if (n%i == 0)cout << " " << i; cout << endl;
}
}
return 0;
}
*/
/*
//答案的
#include <iostream>
using namespace std;
int main()
{
int i,j,s=0;
int count=0;//计算完数个数
for(i=1;i<1000;i++)
{
s=0;
for(j=1;j<=i/2;j++)//查找完数因子,并将每次因子的值增加到总和中
{
if(i%j==0) //整除则为因子
{
s+=j;
}
}
if(s==i)//输出完数的因子,逻辑需要在if分支里面编写。
{
count++;
cout<<i<<" its factor are ";
for(j=1;j<i;j++)//查找完数因子,并将每次因子的值增加到总和中
{
if(i%j==0) //整除则为因子
cout<<j;
}
cout<<endl;//输出完当前完数所有因子后换行
}
if(count == 2) break; //个数到2时,结束循环
}
}
*/
/*
//用数列的答案
使用数组实现的答案:
#include <iostream>
using namespace std;
int main()
{
int i,j,n=0,sum=0;
int count=0;//计算完数个数
int factor[100]={0};//保存因子
for(i=1;i<1000;i++)
{
sum=0;
n=0;
for(j=1;j<=i/2;j++)//查找完数因子,并将每次因子的值增加到sum
{
if(i%j==0) //整除则为因子
{
sum+=j;
factor[n++]=j;
}
}
if(sum==i)//输出完数的因子,逻辑需要在if分支里面编写。
{
count++;
cout<<i<<" its factor are ";
for(j=0;j<n;j++)//查找完数因子,并将每次因子的值增加到总和中
{
cout<<factor[j]<<' ';
}
cout<<endl;//输出完当前完数所有因子后换行
}
if(count == 2) break; //个数到2时,结束循环
}
}
*/
/*先排除素数不会写
#include<iostream>
using namespace std;
int main()
{
int a, b, c;
for (a = 6; a <= 1000; a = a + 2)
{
for (c = 1; c < a; c++)
{
if (a%c==0)
{
cout << a << " its factor are " << c << endl;
}
}
}
return 0;
}
*/
/*
//求a!+b!+c!的值,用一个函数fac(n)求n!。
#include <iostream>
using namespace std;
int main()
{
int fac(int n);
int a, b, c;
cin >> a >> b >> c;
cout << a<<"!+"<<b<<"!+"<<c<<"!="<< fac(a) + fac(b) + fac(c) << endl;
return 0;
}
int fac(int n)
{
if (n == 0)return 1;
int x = 1;
for (int y = 1; y <= n; y++)x = x*y;
return x;
}
*/
/*
//编写两个函数,分别求两个整数的最大公约数和最小公倍数
#include<iostream>
using namespace std;
int main()
{
int min(int a, int b, int c);
int max(int a, int b);
int m, n;
cin >> m >> n;
cout << max(m, n) << ' ' << min(m, n, max(m,n));
return 0;
}
int min(int a, int b, int c)
{
return(a*b / c);
}
int max(int a, int b)
{
if (a < b)
{
int c = a; a = b; b = c;
}
int d;
do
{
d = a%b;
a = b;
b = d;
}
while (d != 0);
return a;
}
*/
/*
//使用递归方法求平方和。
//输入任意一个正整数,输出1到该正整数的平方和
//样例输入10,样例输出385
#include<iostream>
using namespace std;
int main()
{
int ff(int n);
int n;
cin >> n;
cout <<ff(n) << endl;
}
int ff(int n)
{
int s;
if (n == 1)s = 1;
else s = n*n + ff(n - 1);
return s;
}
*/

浙公网安备 33010602011771号