1. 判定一个数字是否是素数
素数只能被1和本身整除
import java.util.Scanner;
public class Test {
//判定一个数字是否是素数
//素数:只能被1和本身整除
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int i;
for(i = 2;i < n;i++){
if(n % i == 0){
break;//n能整除除了1和本身的任何一个数字都不是素数
}
}
if(i == n){
System.out.println(n + "是素数");
}
}
}
改进:
1.例如:16=1*16 2*8 4*4 总有一个数是小于等于16/2的,此时,我们可以将遍历的数据减少一半
import java.util.Scanner;
public class Test {
//判定一个数字是否是素数
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int i;
for (i = 2; i < n / 2; i++) {
if (n % i == 0) {
break;
}
}
if (i > n / 2) {
System.out.println(n + "是素数");
}
}
}
2.例如:16=1*16 2*8 4*4 总有一个数字小于等于16的开方,此时遍历的数据将大大减少
import java.util.Scanner;
public class Test {
//判定一个数字是否是素数
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int i;
for (i = 2; i < Math.sqrt(n); i++) {
if (n % i == 0) {
break;
}
}
if (i > Math.sqrt(n)) {
System.out.println(n + "是素数");
}
}
}
2. 打印 1 - 100 之间所有的素数
import java.util.Scanner;
public class Test {
//打印 1 - 100 之间所有的素数
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
for (int j = 0; j < n; j++) {
int i = 2;
for (i = 2; i < Math.sqrt(j); i++) {
if (j % i == 0) {
break;
}
}
if (i > Math.sqrt(j)) {
System.out.println(j + "是素数");
}
}
}
}
3. 输出乘法口诀表
import java.util.Scanner;
public class Test {
//输出乘法口诀表
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
for (int i = 1;i <= n;i++){
for(int j = 1;j <= i;j++){
System.out.print(i + "*" + j + "=" + (i*j) + " ");
}
System.out.println();
}
}
}
4. 求两个正整数的最大公约数
求最大公约数的方法有很多,我们这里采用辗转相除法
import java.util.Scanner;
public class Test {
//求两个正整数的最大公约数
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int a = scan.nextInt();
int b = scan.nextInt();
int c = a % b;
while(c != 0){
a = b;
b = c;
c = a % b;
}
System.out.println(b);
}
}
5. 求出0~999之间的所有“水仙花数”并输出
“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如153=1^3+5^3+3^3 ,则153是一个“水仙花数”。
这里需要考虑两点:1.获得每一位数字
2.获得该数字是几位数字
import java.util.Scanner;
public class Test {
//求出0~999之间的所有“水仙花数”并输出
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
for(int i = 0;i <= n;i++){
int count = 0;
int tmp = i;
while(tmp != 0){
count++;
tmp = tmp / 10;
}//tmp=0,i还是原来的值
//count为该数字是几位数
tmp = i;
int sum = 0;
while(tmp != 0){
sum += Math.pow(tmp % 10,count);
tmp /= 10;
}
if(sum == i){
System.out.println(i);
}
}
}
}
6. 返回参数二进制中 1 的个数
比如: 15 0000 1111 4 个 1
import java.util.Scanner;
public class Test {
//返回参数二进制中 1 的个数
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int count = 0;
for(int i = 0;i < 32;i++){
if(((n>>>i) & 1) != 0){
count++;
}
}
System.out.println(count);
}
}
7. 获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列
偶数位与奇数位根据数的方向不同结果不同,这里我们设定从右向左数
import java.util.Scanner;
public class Test {
//获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
//偶数位
for(int i = 31;i >= 1;i -= 2){
System.out.print(((n >> i) & 1) + " ");
}
System.out.println();
//奇数位
for(int i = 30;i >= 0;i -= 2){
System.out.print(((n >> i) & 1) + " ");
}
}
}