java集训Word格式.docx
《java集训Word格式.docx》由会员分享,可在线阅读,更多相关《java集训Word格式.docx(42页珍藏版)》请在冰点文库上搜索。
break;
if(count==1)
prime[total]=i;
total++;
returntotal;
}
2.编写程序输出3到10000内的可逆素数。
可逆素数是指:
一个素数将其各位数字的顺序倒过来构成的反序数也是素数。
如157和751均为素数,它们是可逆素数。
inti;
intcount=0;
for(i=3;
i<
10000;
i++)//1分
if(prime(i)==true)//1分
if(prime(invert(i))==true)
System.out.print(i+"
//2分
count++;
if(count%10==0)
System.out.println();
publicstaticintinvert(inta)
ints=0;
while(a>
0)
s=10*s+a%10;
a/=10;
}
returns;
publicstaticbooleanprime(inta)
inti;
for(i=2;
=(int)Math.sqrt(a);
i++)
if(a%i==0)
returnfalse;
returntrue;
3.歌德巴赫猜想问题是指一个不小于6的偶数n能够表示为两个素数之和。
如6=3+3,8=3+5,10=3+7等。
importjava.util.Scanner;
publicclassTest
System.out.println("
请输入一个大于6的偶数:
"
Scanners1=newScanner(System.in);
intn=s1.nextInt();
if(n<
6||n%2!
=0)
System.out.println("
输入错误!
请重新输入!
else
{
System.out.println(n+"
的歌德巴赫猜想是:
gotbaha(n);
}
publicstaticvoidgotbaha(intn)
for(i=3;
n;
if(prime(i)==true&
&
prime(n-i)==true&
(n-i))
System.out.println(n+"
="
+i+"
+"
+(n-i));
for(i=2;
if(a%i==0)
returntrue;
16
16的歌德巴赫猜想是:
16=3+13
16=5+11
4.-1找出范围2--100000间的所有回文质数;
从左到右和从右到左是看一样的素数。
如1,2,5,151等
100000;
if(invert(i)==true)
if(prime(i)==true)
System.out.print(i+"
count++;
if(count%10==0)
System.out.println();
publicstaticbooleaninvert(inta)
intt=a;
if(s==t)
returnfalse;
4-2.判断一个整数是不是回文
publicclassPanduanHuiwenShuzi
请输入一个整数:
if(invert(n)==true)
是回文"
不是回文"
4-3.判断一个字符串是不是回文
publicclassHuiwenZifu
System.out.print("
请输入一串字符:
Scanners=newScanner(System.in);
Stringn=s.nextLine();
StringBuffers1=newStringBuffer(n);
//将字符缓存中的内容倒置
s1.reverse();
//计算出str与sb中对应位置字符相同的个数n
intt=0;
for(inti=0;
n.length();
if(n.charAt(i)==s1.charAt(i))
t++;
if(t==n.length())
是回文!
不是回文!
5-1.找出三个整数的所有因子数。
一个整数n的因子数为包含它自身的所有因子的个数。
例如:
12的因子数为6(1,2,3,4,6,12)。
publicstaticvoidmain(String[]args)
inti,n;
Scanners=newScanner(System.in);
System.out.println("
输入三个整数:
for(i=1;
4;
n=s.nextInt();
System.out.println(n+"
的因子个数"
+facter(n));
publicstaticintfacter(intn)
inti,count=2;
=n/2;
if(n%i==0)
returncount;
}输入三个整数:
386
3的因子个数2
8的因子个数4
6的因子个数4
5-2.一个数如果恰好等于除它本身外的因子之和,这个数就称“完数”。
例如6=1+2+3.
publicclassWanYin{
输入一个整数:
n=s.nextInt();
if(n==facter(n))
是完全因子数"
else
不是完全因子数"
inti,sum=1;
if(n%i==0)
sum=sum+i;
returnsum;
8
8不是完全因子数
6
6是完全因子数
5-3.输出1000以内所以的“完数”
{System.out.println("
1到1000的完数有:
for(inti=1;
i<
1000;
i++){
intt=0;
for(intj=1;
j<
=i/2;
j++){
if(i%j==0){
t=t+j;
if(t==i){
System.out.print(i+"
628496
6.如果一个自然数比所有比它小的自然数的约数个数都要多,那么我们就称这个数为一个反素数。
例如,1、2、4、6、12和24都是反素数。
publicclassFanSushu
Pleaseinputthreenumbers:
Scannersc=newScanner(System.in);
inta,b,c;
intm=sc.nextInt();
intn=sc.nextInt();
intj=sc.nextInt();
a=su(m);
b=su(n);
c=su(j);
System.out.println(a+"
+b+"
+c);
publicstaticintyue(inta)
intb,j=0;
for(b=a;
b>
=1;
b--)
if(a%b==0)
{j++;
returnj;
publicstaticintsu(inta)
inti,b,c;
b=1;
c=1;
for(i=1;
=a;
if(b<
=yue(i))
b=yue(i);
c=i;
returnc;
101001000
1096840
7.输入两个正整数m和n,求其最大公约数和最小公倍数。
Scannerinput=newScanner(System.in);
请输入两个数:
intm=input.nextInt();
intn=input.nextInt();
这两个数的最小公约数是:
+gac(m,n));
这两个数的最小公倍数是:
+m*n/gac(m,n));
publicstaticintgac(inta,intb)
if(a%b==0)
returnb;
returngac(b,(a%b));
}键入一个整数:
25
再键入一个整数:
30
最大公约数:
5
最小公倍数:
150
题目:
判断闰年
publicclassTest{
请输入年份:
intyear;
Scannerinput=newScanner(System.in);
year=input.nextInt();
if(year<
0)
年份有误,程序退出!
if((year%4==0)&
(year%100!
=0)||(year%400==0&
year%3200!
=0)||year%3200==0&
year%172800==0)
System.out.println(year+"
是闰年"
else
不是闰年"
}请输入年份:
86400
86400不是闰年
杨辉三角形
int[][]a=newint[12][12];
12;
i++)
{a[i][i]=1;
a[i][0]=1;
for(inti=1;
for(intj=1;
i;
j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(inti=0;
for(intk=0;
k<
(12-i);
k++)
System.out.print("
for(intj=0;
j++)
if(a[i][j]<
10)
System.out.print(a[i][j]+"
);
if(a[i][j]<
100)
System.out.print(a[i][j]+"
else
}
1
11
121
1331
14641
15101051
1615201561
172135352171
18285670562881
193684126126843691
1104512021025221012045101
1115516533046246233016555111
1
11
121
1331
14641
15101051
1615201561
172135352171
18285670562881
193684126126843691
1104512021025221012045101
打印出如下图案(菱形)
*
***
*****
*******
intH=7,W=7;
//高和宽必须是相等的奇数
(H+1)/2;
for(intj=0;
W/2-i;
System.out.print("
for(intk=1;
(i+1)*2;
System.out.print('
*'
=H/2;
=W-2*i;
矩阵对角线之和
int[][]a=newint[3][3];
请输入9个整数:
3;
a[i][j]=s.nextInt();
输入的3*3矩阵是:
System.out.print(a[i][j]+"
intsum=0;
if(i==j)
sum+=a[i][j];
对角线之和是:
+sum);
矩阵转置
inta[][]={{1,2,3},{4,5,6},{7,8,9}};
inti,j;
for(i=1;
i<
3;
for(j=0;
j<
{
intt;
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
for(i=0;
j<
147
258
369
矩阵相加
(一)
publicclassTest{
publicstaticvoidmain(String[]args){
inta[][]={{1,2,3},{3,4,5}};
intb[][]={{4,5,6},{6,3,2}};
int[][]c=newint[2][3];
2;
c[i][j]=a[i][j]+b[i]