1、题目:判断2-100之间有多少个素数,并输出所有素数。
分析:素数就是除了自己和本身,可以被除外,其它的都不行,所以可以考虑判断,从2~它本身这个区间,可以不能被整除多少次,如果等于这个数与2的差,则这个数就是素数,代码如下:
for (int j = 2; j <i ; j++) {
if(i%j!=0){
count++;
}
if(count==i-2){
b+=i;
System.out.println("质数是"+i+" ");
}
2、题目:将一个正整数分解质因数。例如:输入90,打印出90=233*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
分析:(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n不等于k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
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--;}
}
}
5、题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数
分析:首先注意是改数的所有因数,所以本身不能算,1算。
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次反弹多高
分析:第十次并未弹跳起来,所以不经过路程,不能要多计算。
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。组成所有的排列后再去 掉不满足条件的排列。
分析:三重循环嵌套,再去除不符合条件的
int count=0;
for (int i = 1; i <=4 ; i++) {//百位数字
for (int j = 1; j <=4; j++) {//十位
if(ij)
continue;
for (int k = 1; k <=4;k++) {//个位
if(jk||k==i){continue;}
System.out.println(i+""+j+k);
count++;
}
}
}
System.out.println(count);
9、题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
分析:通过题目,已知条件,列出等式
10、用*打印出菱形:在上午的三角形基础上打印
程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重 for循环,第一层控制行,第二层控制列。
分析:先打出直角三角形,再打出等腰三角形,最后,再打出方向相反的等腰三角形
11、有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
分析:分子和分母都是斐波那契数列。
12、题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
分析;先求它的长度,再逐步分解出它的各位数字。
求一串数字有几位:System.out.println(“输入的是”+a.length()+“位数”);
逆序打印的代码: System.out.println(“逆序打印:”);
for (int i = a.length()-1; i >= 0; i–)
{
System.out.print(a.substring(i,i+1));
15、题目:打印出杨辉三角形(要求打印出10行如下图)
程序分析:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
分析杨辉三角的规律
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{
System.out.print((v=v/j)+” ");}
v*=a;
a–;
}
System.out.println();
20、打印梯形
就是将之前打印的个种三角形,顶点从大于1的数开始
21.打印反方向的九九乘法表
分析:对齐开头,注意要用两次水平制表符
for (int i = 1; i <=9; i++) {
for(int j=0;j<9-i;j++){
System.out.print("\t\t");
}
for (int j = 1; j <=i; j++) {
int sum=ij;
System.out.print(i+""+j+"="+sum+"\t");
}
System.out.println();