【背景信息】
因⼦:因⼦也叫因数,例如3*5=15,那么3和5是15的因⼦。同时15*1=15,那么1和15也是15的因⼦。1,3,5,15 这四个因⼦是15的所有因⼦。完数:如果⼀个数等于不含它本身的其他因⼦之和,则称该数为‘完数’。如6的因⼦有1, 2,3,6,且1+2+3=6,因此6是完数。
【题⽬描述】
输⼊⼀个正整数N(0 < N < 10000),输出⼩于等于N的所有完数及⼩于等于N的完数个数(个数前加 “*”,例如:*2)。
【输入格式】
输⼊⼀个正整数N(0 < N < 10000)。
【输出格式】
输出⼩于N的所有完数及⼩于N的完数个数。
【输入输出样例#1】
输入#1
100
输出#1
6 28 *2
下面是100分做法:
#include <cstdio>
#include <iostream>
using namespace std;
int main()
{
int a,cnt=0; //cnt计数器初始值为0
cin>>a;
for(int i=2;i<=a;i++)//完数没有1,所以从2开始
{
int sum=0;//定义累加计数器sum
for(int j=1;j<=i-1;j++)//循环次数为i-1
{
if(i%j==0)//j是i的因子
{
sum+=j;
}
}
if(sum==i)i是完数
{
cnt++;
cout<<i<<endl;//输出i
}
}
cout<<"*"<<cnt; //最终输出cnt
return 0;
}
没登陆的:
#include <cstdio>
#include <iostream>
using namespace std;
int main()
{
int a,cnt=0; //cnt计数器初始值为0
cin>>a;
for(int i=2;i<=a;i++)//完数没有1,所以从2开始
{
int sum=0;//定义累加计数器sum
for(int j=1;j<=i-1;j++)//循环次数为i-1
{
if(i%j==0)//j是i的因子
{
sum+=j;
}
}
if(sum==i)i是完数
{
cnt++;
cout<<i<<endl;//输出i
}
}
cout<<"*"<<cnt; //最终输出cnt
return 0;
}