一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3
1. 编程找出1000以内的所有完数。
for(int i=1; i<=1000; i++) //找出要处理的数
{
int sum = 0;
for(int j=1; j<i; j++) //找到因子
{
if(i%j==0) //如果能整除,表示这个j是该数的一个因子
{
sum = sum + j;
}
}
//程序运行到该行时,sum中保存的就是该数所有因子的和
if(i==sum)
{
System.out.println(i+"是一个完数");
}
}
2. 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,
求它在第10次落地时,共经过多少米?第10次反弹多高?
public static void main(String[] args)
{
double h1 = 100.0;
double high = h1/2; //第1次落下
double sum = 0.0;
for(int i=1; i<10; i++) //有规律的落下弹起共有9次
{
sum = high*2+sum; //high
high = high/2; //high /= 2;
}
System.out.println("第10次落下共经过"+(sum+100)+"米");
System.out.println("第10次反弹"+high+"米");
}
3. 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。
public static void main(String[] args)
{
int n=0;
for(int i=1; i<=4; i++)
{
for(int j=1; j<=4; j++)
1. 编程找出1000以内的所有完数。
for(int i=1; i<=1000; i++) //找出要处理的数
{
int sum = 0;
for(int j=1; j<i; j++) //找到因子
{
if(i%j==0) //如果能整除,表示这个j是该数的一个因子
{
sum = sum + j;
}
}
//程序运行到该行时,sum中保存的就是该数所有因子的和
if(i==sum)
{
System.out.println(i+"是一个完数");
}
}
2. 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,
求它在第10次落地时,共经过多少米?第10次反弹多高?
public static void main(String[] args)
{
double h1 = 100.0;
double high = h1/2; //第1次落下
double sum = 0.0;
for(int i=1; i<10; i++) //有规律的落下弹起共有9次
{
sum = high*2+sum; //high
high = high/2; //high /= 2;
}
System.out.println("第10次落下共经过"+(sum+100)+"米");
System.out.println("第10次反弹"+high+"米");
}
3. 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。
public static void main(String[] args)
{
int n=0;
for(int i=1; i<=4; i++)
{
for(int j=1; j<=4; j++)