写一个java程序宾馆里有n(2≤n≤1000)个房间,从1∼n编了号。第一个服务员把所有的房间门都打开了,第二个服务员把所有编号是2的倍数的房间“相反处理”,第三个服务员把所有编号是3的倍数的房间作“相反处理”…,以后每个服务员都是如此。当第n个服务员来过后,哪几扇门是打开的。(所谓“相反处理”是:原来开着的门关上,原来关上的门打开。) 【输入】 房间数n。 【输出】 一行,由小到大的打开门的房间序号,各序号之间用一个空格隔开。
时间: 2023-05-20 22:07:09 浏览: 48
以下是Java程序的实现:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
boolean[] doors = new boolean[n+1];
Arrays.fill(doors, true);
for (int i = 2; i <= n; i++) {
for (int j = i; j <= n; j += i) {
doors[j] = !doors[j];
}
}
for (int i = 1; i <= n; i++) {
if (doors[i]) {
System.out.print(i + " ");
}
}
}
}
输入样例:
10
输出样例:
1 4 9
相关问题
编写Java程序,从键盘输入一个整数n(2≤n≤13)输出如下三角形数字图案:
在Java中,我们可以使用循环结构和条件判断来编写一个简单的程序,让用户输入一个整数n,然后生成对应的三角形数字图案。这里是一个基础的示例:
```java
import java.util.Scanner;
public class TrianglePattern {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数(2到13之间): ");
int n = scanner.nextInt();
// 检查输入是否在范围内
if (n < 2 || n > 13) {
System.out.println("输入错误,n必须在2到13之间.");
return;
}
for (int i = 1; i <= n; i++) {
// 使用*字符打印每一行
for (int j = 1; j <= i; j++) {
System.out.print(j + " ");
}
// 结束内层循环并换行
System.out.println();
}
}
}
```
在这个程序中,外层循环控制行数,内层循环则用于打印每个数字。每增加一行,内层循环打印的数字也相应增加。
运行这个程序后,按照用户输入的整数,它会输出对应形状的三角形数字图案。
Java编写一个应用程序,求满足1+2!+3!+…+n!≤9876的最大整数n。
要编写一个Java程序来解决这个问题,首先我们需要了解阶乘的概念,它是从1开始连续整数相乘的结果,例如2! = 2 * 1 = 2,3! = 3 * 2 * 1 = 6,依此类推。
这个问题是寻找一个最大的自然数n,使得1到n的阶乘之和不超过9876。我们可以创建一个循环,从1开始逐个计算阶乘并累加,直到超过9876为止。以下是一个简单的Java程序示例:
```java
public class Main {
public static void main(String[] args) {
int n = 1;
long sum = 1; // 阶乘初始值
while (sum <= 9876 && factorial(n) <= 9876) { // 当累加和小于等于9876时继续
sum += factorial(n);
n++;
}
System.out.println("满足条件的最大整数n是: " + n - 1); // 因为计算的是1到n,所以结果减一
}
// 计算阶乘的辅助函数
private static long factorial(int num) {
if (num == 0 || num == 1) {
return 1;
} else {
return num * factorial(num - 1);
}
}
}
```
运行此程序,它会输出满足条件的最大整数n。注意,我们检查`factorial(n)`是否超过9876是因为阶乘的增长非常快,可能会导致溢出。在实际编程中,如果计算过程中遇到大数溢出问题,可以考虑使用`BigInteger`类来进行大数运算。
阅读全文