7.11-循环结构练习题
一、判断2-100之间有多少个素数,并输出所有素数。
public class zy01 {
public static void main(String[] args) {
int s=0;
for (int i = 2; i <=100 ; i++) {
for (int j = 2; j <i ; j++) {
s = i%j;
if (s==0){
break;
}
}
if (s!=0){
System.out.print(+i+" ");
}
}
}
}
二、打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,
- 其各位数字立方和等于该数本身。
- 例如:153是一个"水仙花数"
- 因为153=1的三次方+5的三次方+3的三次方。
public class zy02 {
public static void main(String[] args) {
for (int i = 100; i <1000 ; i++) {
int a = i/100%10;
int b = i/10%10;
int c = i%10;
if (i==a*a*a+b*b*b+c*c*c){
System.out.print(+i+" ");
}
}
}
}
三、求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。
- 例如5+55+555+5555+55555(此时共有5个数相加)。
public class zy03 {
public static void main(String[] args) {
System.out.print("输入1-9之间的一个数:");
Scanner sc = new Scanner(System.in);
double n=sc.nextInt();
double k=n;
double sum =n;
for (int i = 1; i <=n-1 ; i++) {
k = k+n*Math.pow(10,i);
sum =sum+k;
}
System.out.println(+sum);
}
}
四、将一个正整数分解质因数。例如:输入90,打印出90=233*5。
- 对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
- (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
- (2)如果n不等于k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。
- (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
public class zy04 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.print("请输入一个正整数:");
int num=sc.nextInt();
System.out.print(num+"=");
int k=2;
int g =2;
int num1 = num;
do{
if(num%k==0){
System.out.print(k+"*");
num/=k;
}else{
k=k+1;
}
}while(num!=k);
System.out.print(k+"\n");
if(num1==k){
num=num+1;
System.out.print("num+1的值作为k的值重新计算:");
System.out.print(+(num)+"=");
do{
if(num%g==0){
System.out.print(g+"*");
num/=g;
}else{
g=g+1;
}
}while(num!=g);
System.out.print(g);
}
}
}
五、一个数如果恰好等于它的因子之和,这个数就称为"完数"。
- 例如6=1+2+3.编程找出1000以内的所有完数
public class zy05 {
public static void main(String[] args) {
for (int i = 1; i <1000 ; i++) {
int k=0 ;
for (int j = 1; j <i ; j++) {
if (i%j==0){
k = k+j;
}
}
if (i==k) {
System.out.println(+i);
}
}
}
}