1.输入两个正整数m和n,求其最大公约数和最小公倍数。
- public class Example6 {
- public static void main(String args[]){
- gcdlcm a =new gcdlcm();
- System.out.println("两数的最大公约数是:"+a.gcd(10, 16));
- System.out.println("两数的最大公约数是:"+a.lcm(16, 10));
- }
- }
- class gcdlcm{
- int gcd(int m,int n){
- if(m<n){ //这个判断是为了将大数放在前面
- int temp=n;
- n=m;
- m=temp;
- }
- if(m%n==0){
- return n;
- }
- else{
- m%=n;
- return gcd(m,n);
- //这里也可以写成gcd(n,m),就省掉了前面的判断了,会快一点
- }
- }
- int lcm(int m,int n){
- int i=1;
- if(m<n){ //这个判断是为了将大数放在前面
- int temp=n;
- n=m;
- m=temp;
- }
- int lcm=m;
- while(lcm%n!=0){
- lcm=m*i;
- i++;
- }
- return lcm;
- }
- }
2.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
- import java.util.Scanner;
- public class Example {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- int abcCount=0;//英文字母个数
- int spaceCount=0;//空格键个数
- int numCount=0;//数字个数
- int otherCount=0;//其他字符个数
- Scanner scan=new Scanner(System.in);
- String str=scan.nextLine();
- char[] ch = str.toCharArray();
- for(int i=0;i<ch.length;i++){
- if(Character.isLetter(ch[i])){
- //判断是否字母
- abcCount++;
- }
- else if(Character.isDigit(ch[i])){
- //判断是否数字
- numCount++;
- }
- else if(Character.isSpaceChar(ch[i])){
- //判断是否空格键
- spaceCount++;
- }
- else{
- //以上都不是则认为是其他字符
- otherCount++;
- }
- }
- System.out.println("字母个数:"+abcCount);
- System.out.println("数字个数:"+numCount);
- System.out.println("空格个数:"+spaceCount);
- System.out.println("其他字符个数:"+otherCount);
- }
- }
3.将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
- import java.util.*;
- public class Example4{
- public static void main(String[] args){
- int x;
- Scanner in = new Scanner(System.in);//定义从键盘输入
- System.out.print("请输入一个正整数:");//提示
- x = in.nextInt(); //将从键盘输入的数赋值给x
- new PrimeSplit(x); //匿名初始化一个对象,还有参数的构造函数
- }
- }
- class PrimeSplit{
- int k = 2; //将最小的质数赋值给k
- public PrimeSplit(int x){ //小于等于1的数不可以分解
- if(x<=1){
- System.out.println(x+"是无效的被分解数");
- }
- else if(x==2){
- System.out.println(x+"分解后的质因数为: 1*"+x); //如果输入的是最小质数2,
- }else {
- System.out.print(x+"分解后的质因数为: 1"); //1是所有的正整数的质数
- while(k<=x){ //输入的数可以被k整除
- if(x%k==0){
- System.out.print("*"+k); //将k添加到结果中
- x = x/k;//除以最小质数后重新循环
- }
- else{
- k++;
- }
- }
- }
- }
- }