java简单入门题

时间:2021-04-24作者:klpeng分类:IT综合浏览:324评论:0

一、问题:打印出所有"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该本身。 例如:153是一个水仙花数,因为153=1^3+5^3+3^3。

解法:

1.假设 i 是水仙花数,那么 i 必定是一个三位数,而且 i 的最小值为100,其最大值为999。那么必然100<=i<=999。

2.水仙花数只有个位,十位,百位。各位数的立方和等于本身,则只需要求出某数的个位,十位,百位符合其条件的话,那么某数就是为水仙花数

3.一个三位数,如何求该个位,十位,百位。

    考虑到整型除以整型不会产生小数,只会产生整数。则很好判断三位数的百位数是什么数   如: 求198的百位数   -> 198/100 = 1

   个位数的求法就是让该数除以10所余下的数(%10)就是个位数, 如: 求199的个位数 -> 198/10=19······8 或者198%10=9;

   综上所述,求三位数的十位数的话,只需要让其十位数变成个位然后根据个位数的方法求得 ;如: 求198的十位数 ->198/10 = 19 ; 19%10=9;

4.弄完了处理思路后,就可以写代码了,一个for循环遍历100-999个数,然后每次记录该数的个位,十位,百位。最后判断每个位的立方之和是否位该数,假如是该数的话就输出该数。

 

public class Main{
	public static void main(String[]args){
		int a1;
		int a2;
		int a3;
		for(int i=100;i<=999;i++){
			a1=i%10;
			a2=i/10%10;
			a3=i/100;
			if(i==a1*a1*a1+a2*a2*a2+a3*a3*a3){
				System.out.println(i);
			}
		}
	}
}

二、输入一个n,打印出1~n的所有素数。

题解:从1到n依次遍历,每一个数都判断是否满足素数的要求。由于判断素数a是否为素数,首先质数是指在大于1的自然数中,除了1和它本身以外不再有其他整数整除的自然数。那么也就是说从a除以2~a-1都不会被整除就是素数,假如这样依次判断不会被整除的话相对来说比较麻烦,那么只需要判断假如a除以2~a-1中只要有一个被整除了(除余为0)那么这个数就不是素数。另外,只需要判断2~Math.sqrt(a)这之间的数,假如都没有被整除的那么这个数就是素数。

以下程序就给出了最容易理解的代码。

import java.util.Scanner;
public class Main {
	public static void main(String[]args) {
		Scanner scanner = new Scanner(System.in);
		int N = scanner.nextInt();
		for(int i=2;i<=N;i++) {
			boolean temp = true;
			for(int j=2;j<i;j++) {
				if(i%j==0) {
					temp = false;
				}
			}
			if(temp ==true) {
				System.out.println(i);
			}
		}
	}
}

输出结果:

java简单入门题

三、输入一个n,求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字(n不超过20)。

n! = n*(n-1)!。就是说n-1的阶乘就是n-2的阶乘乘以n-1。依次递推,n的阶乘就是1*2*3……*n。然后在将每一个阶乘相加就行了。

import java.util.Scanner;
public class Main {
	public static void main(String[]agrs) {
		Scanner scanner = new Scanner(System.in);
		int n = scanner.nextInt();
		long sum =0;
		long ji=1;
		for(int i=1;i<=n;i++) {
			ji = ji*i;
			sum=sum+ji;
		}
		System.out.println(sum);
		
	}
}

四、输入a,b,c,输出1+2+...+a + 1^2+2^2+...+b^2 + 1/1+1/2+...+1/c

import java.util.Scanner;
public class Main{
	public static void main(String[]args) {
		Scanner sc = new Scanner(System.in);
		int a,b,c;
		a = sc.nextInt();
		b = sc.nextInt();
		c = sc.nextInt();
		double sum=0;
		for(int i=1;i<=a;i++) {
			sum = sum + i; 
		}
		for(int i=1;i<=b;i++) {
			sum = sum + i*i; 
		}
		for(int i=1;i<=c;i++) {
			sum = sum + 1.0/i; 
		}
		System.out.printf("%.2f",sum);
		
	}
}

 

打赏
文章版权声明:除非注明,否则均为彭超的博客原创文章,转载或复制请以超链接形式并注明出处。
相关推荐

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

猜你喜欢