Java2实用教程(第5版)第三章编程题答案
时间:2021-06-02 17:30:32
收藏:0
阅读:0
Java2实用教程(第5版)第三章编程题答案
(1)编写应用程序求1!+2!+···+10!
int sum = 0;
int fac = 1;
for (int i = 1; i <= 10; i++) {
//求阶乘
for (int j = 1; j <= i; j++) {
fac *= j;
}
sum += fac;
fac = 1;
}
System.out.println("1!+2!+...+10!= " + sum); //4037913
(2)编写一个应用程序求100以内的全部素数
for(int i = 1; i < 101; i++){
boolean flag = i!=1;
for (int j = 2; j < i; j++){
if (i%j == 0){
flag = false;
break;
}
}
if (flag){
System.out.println(i);
}
}
(3)分别用do-while和for循环计算1+1/2!+1/3!+1/4!+···的前20项和
//do-while循环
int i = 1;
double sum = 0;
do{
int j = 1;
int fac = 1;
//求分母的阶乘
do{
fac *= j;
j++;
}while(j <= i);
sum += 1.0 / fac;
i++;
}while(i <= 20);
System.out.println(sum); //1.7182818346494484
//for循环
double sum = 0;
for (int i = 1; i <= 20; i++) {
int fac = 1;
for (int j = 1; j <= i; j++) {
fac *= j;
}
sum += 1.0/fac;
}
System.out.println(sum); //1.7182818346494484
(4)一个数如果恰好等于它的因子之和,这个数就称为完数。编写应用程序求1000之内的所有完数
for (int i = 1; i < 1000; i++) {
int sum = 0;
for (int j = 1; j < i; j++) {
if (i%j == 0){
sum += j;
}
}
if (sum == i){
System.out.println(i); //6 28 496
}
(5)编写应用程序,使用for循环语句计算8+88+888+···前10项之和
double num = 0;
double sum = 0;
for (int i = 0; i < 10; i++) {
if (i == 0){
num = 8;
}else {
//num = num + (8 * Math.pow(10,(double)i));
//实现8 * Math.pow(10,(double)i)
double temp = 8;
for (int j = 1; j <= i; j++) {
temp *= 10;
}
num += temp;
}
sum += num;
}
System.out.println(sum); //9.8765432E9
(6)编写应用程序,输出满足1+2+3+···+n<8888的最大正整数n
int sum = 0;
int n = 0;
for ( ; sum < 8888; n++) {
sum += n;
}
System.out.println(n); //134
评论(0)