计算机程序设计基础随堂测验2 A卷
Problem 1
编写一个程序,包含一个方法:该方法接收一个正整数 n,并打印所有乘积等于 n 的两个正整数的组合。例如,给定 n = 12,方法应打印: 1 x 12 2 x 6 3 x 4 注意:结果中两个数的顺序不区分先后,因此在上述示例中不打印 4 x 3, 6 x 2, 或 12 x 1。在main方法里调用并测试这个方法。
Solution Quiz2AProblem1.java
public class Quiz2AProblem1 {
public static void main(String[] args) {
int n = 12;
printFactorizedCombinations(n);
}
/**
* 给定正整数n,打印分解成两个数的乘积
*/
public static void printFactorizedCombinations(int n) {
if (n <= 1) {
System.out.println("Wrong number. The number should be greater than 1. your input: " + n);
return;
}
for(int i = 1; i <= n/2; i++) {
// 如果n不能被i整除,进入下一循环
if(n % i != 0) {
continue;
}
int quotient = n / i;
// 如果商小于i,结束循环。此时已经打印了所有组合
if(quotient < i) {
break;
}
System.out.println(i + " x " + quotient);
}
}
}
Problem 2
编写一个程序,找出函数f(x)=-x^2+2023x+2024的近似最大值。
Solution Quiz2AProblem2.java
public class Quiz2AProblem2 {
public static void main(String[] args) {
double bestValue = 0.;
double step = 0.1;
for(double x = 0.; x <2023; x +=step) {
double newValue = getFuntionalValue(x);
if(newValue > bestValue) {
bestValue = newValue;
continue;
}else {
break;
}
}
System.out.println("The approximate optimal value of func is: " + bestValue);
// check the approximate opt. value
double optX = 2023./2;
double optValue = getFuntionalValue(optX);
System.out.println("The opt value by quadratic formula: " + optValue);
}
static double getFuntionalValue(double x) {
return -x * x + 2023 * x + 2024;
}
}