1、题目:判断2-100之间有多少个素数,并输出所有素数。
程序分析:判断素数的方法:用一个数分别去除2到(这个数),如果能被整除,则表明此数不是素数,反之是素数。?
/**
* @Author: ChaoKeAiMuZhi
* @Date: 2020/7/13 13:42
* @Description:判断2-100之间有多少个素数,并输出所有素数。
**/
public class Test1 {
public static void main(String[] args) {
//素数:只能被1和其本身整除;合数:除了1和其本身之外,还有其他因数
//1、任意一个数如何判断其是不是质数/素数
/*int num=9;
int count=0;
for (int i = 2; i
//2、一个是要从2到100循环,循环的每一个数,都重复执行上述操作
//3、如果有一个质数产生,计数器+1,同时打印该质数
int count=0;
for (int num = 2; num <=100 ; num++) {
int flag=0;//判断是否是合数的标志位
for (int j = 2; j <num ; j++) {
if(num%j==0){
//代表num是合数
flag=1;
break;
}
}
if(flag!=0){
//合数
}else{
//质数
count++;
System.out.println("质数"+num);
}
}
System.out.println("一共有"+count+"个质数");
}
}
2、题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
程序分析:利用for循环控制100-999的数,每个数分解出个位,十位,百位。
/**
* @Author: ChaoKeAiMuZhi
* @Date: 2020/7/13 14:04
* @Description:"水仙花数"
**/
public class Test2 {
public static void main(String[] args) {
//判断一个数是不是“水仙花数”
//1、取出该三位数各位的数字
//2、对这三个数字求立方
//3、把立方的结果求和,与该数进行比较
/*int num=153;
int a=num/100;
int b=num/10%10;
int c=num%10;
int sum=a*a*a+b*b*b+c*c*c;
if(num==sum){
System.out.println(num+"是水仙花数");
}*/
for (int i = 100; i <1000 ; i++) {
int a=i/100;
int b=i/10%10;
int c=i%10;
int sum=a*a*a+b*b*b+c*c*c;
if(sum==i){
System.out.println(i+"是水仙花数");
}
}
}
}
3、题目:将一个正整数分解质因数。例如:输入90,打印出90=233*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n不等于k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
import java.util.Scanner;
/**
* @Author: ChaoKeAiMuZhi
* @Date: 2020/7/13 14:13
* @Description:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
**/
public class Test3 {
public static void main(String[] args) {
/* int num=90;
System.out.print(num+"=");
num/=2;
System.out.print(2);
num/=3;
System.out.print("*"+3);
num/=3;
System.out.print("*"+3);
num/=5;
System.out.print("*"+5);
if(num==1){
System.out.println("结束");
}*/
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个正整数");
int num=sc.nextInt();
System.out.print(num+"=1");
for (int i = 2; i <=num ; i++) {
if(i==num){
System.out.print("*"+num);
break;
}else{
if(num%i==0){
//能除尽的时候才除
num/=i;
System.out.print("*"+i);
i--;
}
}
}
}
}
4、题目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如5+55+555+5555+55555(此时共有5个数相加)。
程序分析:关键是计算出每一项的值。。
import java.util.Scanner;
/**
* @Author: ChaoKeAiMuZhi
* @Date: 2020/7/13 14:41
* @Description:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
**/
public class Test4 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个10以内的正整数:");
int a=sc.nextInt();
int sum=0;
int num=0;
for (int i = 1; i <=a ; i++) {
num=+a;
sum+=num;
}
System.out.println(sum);
}
}
5、题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数
/**
* @Author: ChaoKeAiMuZhi
* @Date: 2020/7/13 14:50
* @Description:一个数如果恰好等于它的因子之和,这个数就称为"完数"
* 例如6=1+2+3.编程找出1000以内的所有完数
**/
public class Test5 {
public static void main(String[] args) {
for (int i = 2; i <=1000 ; i++) {
//求某个数的所有因数
int sum=0;//每次循环初始化一次求和
for (int j = 1; j <i ; j++) {
if(i%j==0){
sum+=j;
}
}
if(i==sum){
System.out.println("完数:"+i);
}
}
}
}
6、题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高
/**
* @Author: ChaoKeAiMuZhi
* @Date: 2020/7/13 14:56
* @Description:一球从100米高度自由落下,每次落地后反跳回原高度的一半;
* 再落下,求它在第10次落地时,共经过多少米?第10次反弹多高
**/
public class Test6 {
public static void main(String[] args) {
double height=100;
double total=height;
for(int i=1;i<=10;i++){
height/=2;
System.out.println("第"+i+"次反弹的高度为"+height);
if(i==10){
break;
}
total+=height*2;
}
System.out.println(total);
}
}
7、题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。
/**
* @Author: ChaoKeAiMuZhi
* @Date: 2020/7/13 15:04
* @Description:有1、2、3、4个数字,
* 能组成多少个互不相同且无重复数字的三位数?都是多少?
**/
public class Test7 {
public static void main(String[] args) {
int count=0;
for (int i = 1; i <=4 ; i++) {
//百位数字
for (int j = 1; j <=4 ; j++) {
//十位数字
if(j==i)continue;
for (int k = 1; k <=4; k++) {
//个位数字
if(k==i || k==j) continue;
System.out.println(i+""+j+k);
count++;
}
}
}
System.out.println("一共"+count+"个");
}
}
9、题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
程序分析:在10万以内判断,另外由这个数的开方数自乘得到平方数,进行比较
/**
* @Author: ChaoKeAiMuZhi
* @Date: 2020/7/13 15:18
* @Description:一个整数,它加上100后是一个完全平方数,
* 再加上168又是一个完全平方数,请问该数是多少?
**/
public class Test9 {
public static void main(String[] args) {
for(int i=0;i<100000;i++){
//1、这个数加上100以后是完全平方数
//2、这个数加上168以后是完全平方数
int num1=i+100;
int num2=i+268;
boolean flag=false;
int tmp=0;
for (int j = 11; j <400 ; j++) {
if(num1==j*j){
tmp=j;
flag=true;
}
if(flag){
if(num2==j*j){
System.out.println(i+"+100="+tmp*tmp);
System.out.println(i+"+268="+num2);
}
}
}
}
}
}
11、有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
程序分析:请抓住分子与分母的变化规律。
/**
* @Author: ChaoKeAiMuZhi
* @Date: 2020/7/13 15:51
* @Description:
**/
public class Test11 {
public static void main(String[] args) {
int a=1;
int b=2;
double sum=b/(double)a;
for(int i=2;i<=20;){
a=a+b;
sum+=a/(double)b;
i++;
if(i==21){
break;
}
b=a+b;
sum+=b/(double)a;
i++;
}
System.out.println(sum);
}
}
15、题目:打印出杨辉三角形(要求打印出10行如下图)
程序分析:
1
11
121
1331
14641
15101051
/**
* @Author: ChaoKeAiMuZhi
* @Date: 2020/7/13 16:09
* @Description:杨辉三角
**/
public class Test15 {
public static void main(String[] args) {
int num=5;
for (int i = 0; i <num ; i++) {
int v=1;
int a=i;
for (int j = 0; j <=i ; j++) {
if(j==0) {
System.out.print(1+" ");
}else {
v=v/j;
System.out.print(v+" ");
}
v*=a;
a--;
}
System.out.println();
}
}
}
16、题目:求0—7所能组成的奇数个数。
思路分析:
可以组成从1位数到8位数,分别统计可以组成的个数
1位数:4个(1、3、5、7)
最高位:6个(0~7这8个数,出去个位和0有6种选择)
出去个位数和最高位(8-2)(8-3)……
/**
* @Author: ChaoKeAiMuZhi
* @Date: 2020/7/13 16:37
* @Description:
**/
public class Test16 {
//结尾为1、3、5、7的就为奇数,应该是每个数只能用1遍
//个位:4种可能 最高位:7-1种可能 其余位数:8-2 8-3 8-4
public static void main(String[] args) {
int num=0;
int sum=0;
for (int i = 1; i <=8 ; i++) {
for (int j = 1; j <=i; j++) {
if(j==1){
num=4;//个位
}else if(j==2){
num=num*6;//最高位
}else{
num=num*(8-j+1);
}
}
System.out.println(i+"位数符合条件的有"+num+"个");
sum+=num;
}
System.out.println("0—7所能组成的奇数个数是:"+sum);
}
}