java第四章课后习题
自己写的课后习题如有错误多多包涵
4.1
static boolean JudgePrime(int number) //exercises 4.1 方法
{
for(int i=2;i<number;i++)
{
if(number%i==0) return false;
}
return true;
}
Scanner sc=new Scanner(System.in); //exercises 4.1 主函数
int x;
System.out.println("请输入一个数,如果是素数返回true不是则返回false");
x=sc.nextInt();
System.out.print("结果:"+JudgePrime(x));
4.2
static int CommonDivisor(int a,int b) //求a和b的最大公约数 exercises 4.2
{
int middle1,middle2,middle3=0;
middle1=a;
middle2=b;
while(true)
{
middle3=middle1%middle2;
if(middle3==0)
{
break;
}
else
{
middle1=middle2;
middle2=middle3;
}
}
return middle2;
}
static int CommonMultiple(int a,int b) //求a和b的最小公倍数数 exercises 4.2
{
return a*b/CommonDivisor(a,b);
}
Scanner sc=new Scanner(System.in); //exercises 4.2
System.out.println("请输入a,b");
int a,b;
a=sc.nextInt();
b=sc.nextInt();
System.out.println("a,b的最大公约数为: "+CommonDivisor(a,b));
System.out.println("a,b的最小公倍数为: "+CommonMultiple(a,b));
4.3
static double exer4_3(int n) //exercises 4.3
{
double sum=0;
for(double i=1;i<=n;i++)
{
if(i%2==0)
sum=sum-(1/i);
else
sum=sum+(1/i);
}
return sum;
}
Scanner sc=new Scanner(System.in); //exercises 4.3
int n;
System.out.println("请输入n");
n=sc.nextInt();
System.out.println("this "+exer4_3(n));
4.4
static int Fibonacci(int n) //exercises 4.4
{
if(n==1) return 0;
else if(n==2) return 1;
else
{
int middle1=0,middle2=1,middleN=0;
for(int i=2;i<n;i++)
{
middleN=middle1+middle2;
middle1=middle2;
middle2=middleN;
}
return middleN;
}
}
Scanner sc=new Scanner(System.in); //exercises 4.4
int n;
System.out.println("请输入n");
n=sc.nextInt();
System.out.println("Fibonacci数列的第n项为::"+Fibonacci(n));
4.5
static int Factorial(int n) //exercises 4.5
{
int sum=1;
for(int i=1;i<=n;i++)
{
sum=sum*i;
}
return sum;
}
Scanner sc=new Scanner(System.in); //exercises 4.5
int n,sum=0;
System.out.print("请输入n:");
n=sc.nextInt();
for(int i=1;i<=n;i++)
{
sum=sum+Factorial(i);
}
System.out.println("1!+2!+……+n!="+sum);
4.6
static boolean Narcissus(int n) //exercises 4.6
{
if(n>=100&&n<=999)
{
int x,y,z;
x=n%10;
y=n/10%10;
z=n/100;
if(x*x*x+y*y*y+z*z*z==n)
return true;
else
return false;
}
else
{
return false;
}
}
Scanner sc=new Scanner(System.in); //exercises 4.6
int n;
System.out.println("请输入一个数,如果是水仙花数返回true不是则返回false");
n=sc.nextInt();
System.out.println("结果"+Narcissus(n));
4.7
static void EquationX(int a,int b,int c) //exercises 4.7
{
if(b*b-4*a*c<0)
System.out.println("该一元二次方程无实数根");
else if(b*b-4*a*c==0)
System.out.println("该一元二次方程有两个相等的实数根为:"+(-b/2*a));
else
{
System.out.println("该一元二次方程有两个不相等的实数根分别是"+((-b+Math.sqrt(b*b-4*a*c))/2*a)+"和"+((-b-Math.sqrt(b*b-4*a*c))/2*a));
}
}
Scanner sc=new Scanner(System.in); //exercises 4.7
int a,b,c;
System.out.println("请输入一元二次方程ax2+bx+c=0的a,b,c");
a=sc.nextInt();
b=sc.nextInt();
c=sc.nextInt();
EquationX(a,b,c);