(1).用辗转相除法求两个数的最大公约数的步骤如下:
1.先用小的一个数除大的一个数,得第一个余数;
2.再用第一个余数除小的一个数,得第二个余数;
2.又用第二个余数除第一个余数,得第三个余数;
4.这样逐次用后一个数去除前一个余数,直到余数是0为止。那么,最后一个除数就是所求的最大公约数(如果最后的除数是1,那么原来的两个数是互质数)。
Java代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.println("请输入两个整数:");
Scanner in=new Scanner(System.in);
int n1=in.nextInt();
int n2=in.nextInt();
int dividend = (n1>n2)?n1:n2;
int divisor = (n1>n2)?n2:n1;
int remainder = divisor;
while (remainder>0) {
divisor = remainder;
remainder = dividend%divisor;
dividend=divisor;
}
System.out.println(n1+"和"+n2+"的最大公约数是"+divisor);
in.close();
}
}
(2).输出1-100之间所有的素数。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int i;
for(int num=2;num<=100;num++) {
i=2;
while(num%i!=0) {
i++;
}
if(i==num) {
System.out.println(num);
}
}
}
}
(3).编写一个程序,输入一组整数,以-1结束,比较并输出其中的最大值和最小值
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int max;//用来保存最大数
int min;//用来保存最小数
int num;//用来保存从键盘上输入的那个数
Scanner in =new Scanner(System.in);
System.out.println("请输入整数:");
max=min=num=in.nextInt();//暂时把值设置为第一次输入的值
while(num!=-1) {
if(num<min) {
min=num;//如果录进来的值比储存值还小 就替换掉
}
if(num>max) {
max=num;//如果录进来的值比储存值大 也替换掉
}
System.out.println("请继续输入 输入-1结束:");
num=in.nextInt();
}
System.out.println("最大值"+max+",最小值"+min);
}
}
(4)写一个程序,读入20个10以内的正整数,输出每个整数出现的次数
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
int[] counts = new int[20];//定义一个数组
Scanner in = new Scanner(System.in);//输入数字
for(int i = 0; i < 20; i++)
{
counts[i] = in.nextInt(); //输入0到9之间的整数
System.out.print(counts[i] + " ");//输出打印一下数字
}
System.out.println();
int [] number = check(counts);
int [] newnumber = new int[10];
int length = 9;
for(int k = 0; k < 10;k++)
{
newnumber[k] = number[length];
length--;
}
String output = "";
for(int j = 0 ; j < 10; j++)
{
if(newnumber[j] != 0)
output += j + " appear " + newnumber[j] + ((newnumber[j] == 1) ? " time\n" : " times\n");
}
System.out.println(output);
}
//统计每个数出现的次数
public static int[] check(int[] counts){
int[] number = new int[10];
for(int i = 0; i < 20; i++)
number[9 - counts[i]]++;
return number;
}
}