当前位置:文档之家› Java循环结构习题

Java循环结构习题

A,求1到100以内的素数.要求每10个数换一行。

1.public class SuShu{
2.public static void main(String[] args) { //求1到100的素数,实际就是求2
到99的素数,要知道的知识点是除2以为,所有的偶数都是素数。

3.inti,y;//必须在for语句之前定义,可以不对变量赋值
4.int t=0;
5.for(i=2;i<=99;i++){
6. for( y=2;y<=i;y++)
7. { if(i%y==0)
8. break;
9. }
10.if(y==i){
11.System.out.print(" "+y);
12.t++;
13.}
14. if(t%10==0){
15.System.out.println();
16. }
17.
18.
19.}
20.}
21.}
B,一个自然数是素数,且它的数字位置任意对换后形成的数仍未素数,这种数叫做绝对素数,例如13 和31。

编写一个程序,显示100以内的所有绝对素数。

分析,由题意可以知道必须是两位数字,而且只能有1、3、7、9组合,个位为5的能被5整数,不是素数。

publicclass Demo{
publicstaticvoid main(String[] args) {
for(int i=10;i<=100;i++)
{
if(isSushu(i)&&isSushu(conveter(i)))
{
System.out.print(i+" ");
}
}
}
staticboolean isSushu(int i)//i是否为素数
{
int j=2; //用2到i-1之间的任一整数去整除
for(;j<i;j++)
{
if(i%j==0)returnfalse;
}
returntrue;
}
static int conveter(int i)//个位和十位数转换
{
int ge=i%10; //个位
int shi=i/10;//十位
return ge*10+shi;
}
}
分析代码如下,程序写了三个方法,而且这三个方法都是静态方法,无需对象就可以调用,第一个方法是判断循环遍历的数是否是素数isSushu(int i),
第二个方法是用来进行数字位置任意对换的方法
第三个方法是主方法,也就是程序运行的入门main开始,通过for循环遍历我们需要的数字,关键是if里面的条件要明白
第一个条件isSushu(i)是判断循环遍历的数是素数吗?挑选时是素数的数
第二个条件是一个复合条件,isSushu(conveter(i)),首先通过方法convertre()进行数字位置的对换,对换后,判断对换后的数字是否是素数,如果是,则输出,如果不是,重新判断。

C.一个三位数除以11的商等于他各位数字的平方和
public class PingFanHe {
public static void main(String[] args) {
inti,j,n,s;
for(i=100;i<=999;i++){
n=i;
j=n/11;
s = 0;
while(n!=0){
s=s+(n%10)*(n%10);//第一次求得个位数
n/=10;//第一次循环求得两位数
}
if(j==s){
System.out.print(i+" ");
}
}
}
}
此程序结构有不足之处,请仔细发现。

现在加一个条件一个三位数除以11的商等于他各位数字的平方和且其中至少有两位数字相同。

publicclass Test{
publicstaticvoid main(String[] args) { int n,a,b,c;
for(n=100;n<=999;n++)
{ a=n/100;//求百位
b=n%100/10;//求十位
c=n%10;
/*if(n/11!=a*a+b*b+c*c)
continue;
if(a==b||b==c||a==c)
System.out.print(n+" ");*/
//或者将两个if改写成如下
if(n/11==a*a+b*b+c*c)&&(a==b||b==c||a==c) System.out.print(n+" ");
}
}
}
、。

相关主题