1. 一個數(shù)如果恰好等于它的因子之和,這個數(shù)就稱為 "完數(shù) "昔字。例如6=1+2+3編程找出1000以內(nèi)的所有完數(shù)爆袍。
class WanShu
{
public static void main(String[] args)
{
int sum = 0;
for (int i = 1; i <= 1000; i++)
{
int a = 0;
for (int j = 1; j < i; j++)
{
if (i % j == 0)
a += j;
}
if (a == i)
{
System.out.println(a);
sum++;
}
}
}
}
2. 一球從100米高度自由落下,每次落地后反跳回原高度的一半作郭;再落下陨囊,求它在第10次落地時,共經(jīng)過多少米夹攒?第10次反彈多高蜘醋?
class TanQiu
{
public static void main(String[] args)
{
double h1=100;//第1次開始下落的高度
double high = h1/2;//第1次反彈的高度
double sum=0;
for(int i=1; i<=10; i++)
{
//從第1次反彈開始,到第10次落地咏尝,共10次反復(fù)
//后一次是前一次高度的一半
sum = high*2+sum;
high = high/2;
}
//共經(jīng)過的距離要加上開始下落的100米
System.out.println("第10次落地共經(jīng)過:"+(sum+100)+"米");
//第10次彈起的高度是第11次的一倍
System.out.println("第10次彈起:"+(high*2)+"米");
}
}
3. 有1压语、2、3编检、4個數(shù)字胎食,能組成多少個互不相同且無重復(fù)數(shù)字的三位數(shù)?都是多少蒙谓?
分析:可填在百位斥季、十位训桶、個位的數(shù)字都是1累驮、2酣倾、3、4谤专。組成所有的排列后再去掉不滿足條件的排列躁锡。
class SuZhi
{
public static void main(String[] args)
{
for (int i = 1; i <= 4; i++)
{
for (int j = 1; j <= 4; j++)
{
if (j == i)
{
continue;
}
for (int k = 1; k <= 4; k++)
{
if (k == i || k == j)
{
continue;
}
for (int m = 1; m <= 4; m++)
{
if (m == i || m == j || m == k)
{
continue;
}
System.out.println(i * 1000 + j * 100 + k * 10 + m);
}
}
}
}
}
}
4. 一個整數(shù),它加上100后是一個完全平方數(shù)置侍,再加上168又是一個完全平方數(shù)映之,請問該數(shù)是多少?
分析:在10萬以內(nèi)判斷蜡坊,先將該數(shù)加上100后再開方杠输,再將該數(shù)加上268后再開方,如果開方后的結(jié)果滿足如下條件秕衙,即是結(jié)果蠢甲。
class PingFangSu
{
public static void main(String[] args)
{
for(int i=100000; i>0; i--)
{
//使用Math.sqrt開平方
//%1==0判斷是否為整數(shù)
if(Math.sqrt(i+100)%1==0)
{
if(Math.sqrt(i+100+168)%1==0)
{
System.out.println(i+"是完全平方數(shù)");
}
}
}
}
}
5. 輸入某年某月某日,判斷這一天是這一年的第幾天据忘?
分析:以3月5日為例鹦牛,應(yīng)該先把前兩個月的加起來,然后再加上5天即本年的第幾天勇吊,特殊情況曼追,閏年且輸入月份大于3時需考慮多加一天。
class TianSu
{
public static void main(String[] args)
{
int yy=2017;
int mm=3;
int dd=27;
switch(mm-1) //用之前各個月的天數(shù)汉规,加上本月的天數(shù)
{
case 11:
dd=dd+30;
case 10:
dd=dd+31;
case 9:
dd=dd+30;
case 8:
dd=dd+31;
case 7:
dd=dd+31;
case 6:
dd=dd+30;
case 5:
dd=dd+31;
case 4:
dd=dd+30;
case 3:
dd=dd+31;
case 2:
dd=dd+28;
case 1:
dd=dd+31;
}
if(yy%4==0&&yy%100!=0||yy%400==0)
{
dd=dd+1; //如果是閏年再加1天
}
System.out.println("是"+yy+"的第"+dd+"天");
}
}
6. 打印出如下圖案
*
***
******
********
******
***
*
分析:先把圖形分成兩部分來看待礼殊,前四行一個規(guī)律,后三行一個規(guī)律针史,利用雙重for循環(huán)膏燕,第一層控制行,第二層控制列悟民。
class LingXing
{
public static void main(String[] args)
{
int m = -2;
for (int i = 0; i < 7; i++)
{
if (i < 4)
{
if (i % 2 == 0)
{
m = m + 3;
} else m = m + 2;
} else
{
if (i % 2 == 0)
{
m = m - 2;
} else
m = m - 3;
}
for (int j = 0; j < m; j++)
{
System.out.print("*");
}
System.out.println();
}
}
}
7. 有一分?jǐn)?shù)序列:2/1坝辫,3/2,5/3射亏,8/5近忙,13/8,21/13...求出這個數(shù)列的前20項之和智润。
分析:抓住分子與分母的變化規(guī)律及舍。
class FenSu
{
public static void main(String[] args)
{
double fz = 2.0;
double fm = 1.0;
double sum = 0.0;
for(int i=1; i<=20; i++)
{
System.out.println(fz+"/"+fm);
sum = sum+(fz/fm);
double t = fz;
fz = fz+fm;
fm = t;
}
System.out.println(sum);
}
}
8. 有5個人坐在一起,問第五個人多少歲窟绷?他說比第4個人大2歲锯玛。問第4個人歲數(shù),他說比第3個人大2歲。問第三個人攘残,又說比第2人大兩歲拙友。問第2個人,說比第一個人大兩歲歼郭。最后問第一個人遗契,他說是10歲。請問第五個人多大病曾?
分析:利用遞歸的方法牍蜂,遞歸分為回推和遞推兩個階段。要想知道第五個人歲數(shù)泰涂,需知道第四人的歲數(shù)鲫竞,依次類推,推到第一人(10歲) 逼蒙,再往回推贡茅。
class NianLing
{
public static void main(String[] args)
{
int age = 10;
for(int i=2; i<=5; i++)
{
age = age+2;
}
System.out.println("第5個人的年齡是"+age);
}
}
9. 一個5位數(shù),判斷它是不是回文數(shù)其做。即12321是回文數(shù)顶考,個位與萬位相同,十位與千位相同妖泄。
class HuiWen
{
public static void main(String[] args)
{
for (int i = 10000; i <= 99999; i++)
{
int gw = i % 10; //個位
int ww = i / 10000; //萬位
int sw = (i / 10) % 10; //十位
int qw = (i / 1000) % 10; //千位
if ((gw == ww) && (sw == qw))
{
System.out.println(i+"是回文");
}
}
}
}
10. 打印出楊輝三角形(要求打印出10行如下圖)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
class YangHui
{
public static void main(String[] args)
{
int n = 10; //打印10行的楊輝三角形
int i = 0;
int j = 0;
int[][] arr = new int[n][n];
arr[0][0] = 1; //第0行特殊處理
for (i = 1; i < n; i++) //從第1行開始驹沿,到第n行結(jié)束
{
arr[i][0] = 1; //每行的頭尾固定為1
arr[i][i] = 1;
for (j = 1; j < i; j++) //從第2列開始,到第i-1列
{
//每個元素等于:上一行的上一列 + 上一行的該列
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
}
}
//輸出
for (i = 0; i < n; i++)
{
for (j = 0; j <= i; j++)
{
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
}