java集训.docx
- 文档编号:6169339
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:42
- 大小:25.11KB
java集训.docx
《java集训.docx》由会员分享,可在线阅读,更多相关《java集训.docx(42页珍藏版)》请在冰点文库上搜索。
java集训
1.编写程序输出,找出2~200000之间的所有质数。
希望用尽可能快的方法实现。
publicclassTest
{
publicstaticvoidmain(String[]args)
{
int[]prime=newint[300000];
prime[0]=2;prime[1]=3;prime[2]=5;
inttotal=3;//找到素数的个数
inti,n=200000;//要查找的范围(>=6)
total=creat_prime(prime,n,total);
for(i=0;i { System.out.print(prime[i]+""); if((i+1)%10==0) System.out.println(); } } publicstaticintcreat_prime(intprime[],intn,inttotal) { inti,j,gab=2,count; for(i=7;i<=n;i+=gab) { count=1; gab=6-gab; for(j=0;prime[j]*prime[j]<=i;j++) { if(i%prime[j]==0) { count=0; break; } } if(count==1) { prime[total]=i; total++; } } returntotal; } } 2.编写程序输出3到10000内的可逆素数。 可逆素数是指: 一个素数将其各位数字的顺序倒过来构成的反序数也是素数。 如157和751均为素数,它们是可逆素数。 publicclassTest { publicstaticvoidmain(String[]args) { 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;i<=(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 { publicstaticvoidmain(String[]args) { 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) { inti; for(i=3;i { if(prime(i)==true&&prime(n-i)==true&&i<(n-i)) System.out.println(n+"="+i+"+"+(n-i)); } } publicstaticbooleanprime(inta) { inti; for(i=2;i<=(int)Math.sqrt(a);i++) if(a%i==0) returnfalse; returntrue; } } 请输入一个大于6的偶数: 16 16的歌德巴赫猜想是: 16=3+13 16=5+11 4.-1找出范围2--100000间的所有回文质数;从左到右和从右到左是看一样的素数。 如1,2,5,151等 publicclassTest { publicstaticvoidmain(String[]args) { inti; intcount=0; for(i=2;i<100000;i++) { if(invert(i)==true) { if(prime(i)==true) { System.out.print(i+""); count++; if(count%10==0) System.out.println(); } } } } publicstaticbooleaninvert(inta) { ints=0; intt=a; while(a>0) { s=10*s+a%10; a/=10; } if(s==t) returntrue; returnfalse; } publicstaticbooleanprime(inta) { inti; for(i=2;i<=(int)Math.sqrt(a);i++) if(a%i==0) returnfalse; returntrue; } } 4-2.判断一个整数是不是回文 importjava.util.Scanner; publicclassPanduanHuiwenShuzi { publicstaticvoidmain(String[]args) { System.out.println("请输入一个整数: "); Scanners1=newScanner(System.in); intn=s1.nextInt(); if(invert(n)==true) System.out.println(n+"是回文"); else System.out.println(n+"不是回文"); } publicstaticbooleaninvert(inta) { ints=0; intt=a; while(a>0) { s=10*s+a%10; a/=10; } if(s==t) returntrue; returnfalse; } } 4-3.判断一个字符串是不是回文 importjava.util.Scanner; publicclassHuiwenZifu { publicstaticvoidmain(String[]args) { System.out.print("请输入一串字符: "); Scanners=newScanner(System.in); Stringn=s.nextLine(); StringBuffers1=newStringBuffer(n);//将字符缓存中的内容倒置 s1.reverse();//计算出str与sb中对应位置字符相同的个数n intt=0; for(inti=0;i { if(n.charAt(i)==s1.charAt(i)) t++; } if(t==n.length()) System.out.println(n+"是回文! "); else System.out.println(n+"不是回文! "); } } 5-1.找出三个整数的所有因子数。 一个整数n的因子数为包含它自身的所有因子的个数。 例如: 12的因子数为6(1,2,3,4,6,12)。 importjava.util.Scanner; publicclassTest { publicstaticvoidmain(String[]args) { inti,n; Scanners=newScanner(System.in); System.out.println("输入三个整数: "); for(i=1;i<4;i++) { n=s.nextInt(); System.out.println(n+"的因子个数"+facter(n)); } } publicstaticintfacter(intn) { inti,count=2; for(i=2;i<=n/2;i++) if(n%i==0) count++; returncount; } }输入三个整数: 386 3的因子个数2 8的因子个数4 6的因子个数4 5-2.一个数如果恰好等于除它本身外的因子之和,这个数就称“完数”。 例如6=1+2+3. importjava.util.Scanner; publicclassWanYin{ publicstaticvoidmain(String[]args) { inti,n; Scanners=newScanner(System.in); System.out.println("输入一个整数: "); n=s.nextInt(); if(n==facter(n)) System.out.println(n+"是完全因子数"); else System.out.println(n+"不是完全因子数"); } publicstaticintfacter(intn) { inti,sum=1; for(i=2;i<=n/2;i++) if(n%i==0) sum=sum+i; returnsum; } } 输入一个整数: 8 8不是完全因子数 输入一个整数: 6 6是完全因子数 5-3.输出1000以内所以的“完数” importjava.util.Scanner; publicclassWanYin{ publicstaticvoidmain(String[]args) {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+""); } } } } 1到1000的完数有: 628496 6.如果一个自然数比所有比它小的自然数的约数个数都要多,那么我们就称这个数为一个反素数。 例如,1、2、4、6、12和24都是反素数。 importjava.util.Scanner; publicclassFanSushu { publicstaticvoidmain(String[]args) { System.out.println("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;i<=a;i++) { if(b<=yue(i)) { b=yue(i); c=i; } } returnc; } } Pleaseinputthreenumbers: 101001000 1096840 7.输入两个正整数m和n,求其最大公约数和最小公倍数。 importjava.util.Scanner; publicclassTest { publicstaticvoidmain(String[]args) { Scannerinput=newScanner(System.in); System.out.print("请输入两个数: "); intm=input.nextInt(); intn=input.nextInt(); System.out.println("这两个数的最小公约数是: "+gac(m,n)); System.out.println("这两个数的最小公倍数是: "+m*n/gac(m,n)); } publicstaticintgac(inta,intb) { if(a%b==0) returnb; else returngac(b,(a%b)); } }键入一个整数: 25 再键入一个整数: 30 最大公约数: 5 最小公倍数: 150 题目: 判断闰年 importjava.util.Scanner; publicclassTest{ publicstaticvoidmain(String[]args) { System.out.print("请输入年份: "); intyear; Scannerinput=newScanner(System.in); year=input.nextInt(); if(year<0) System.out.println("年份有误,程序退出! "); else if((year%4==0)&&(year%100! =0)||(year%400==0&&year%3200! =0)||year%3200==0&&year%172800==0) System.out.println(year+"是闰年"); else System.out.println(year+"不是闰年"); } }请输入年份: 86400 86400不是闰年 题目: 杨辉三角形 publicclassTest { publicstaticvoidmain(String[]args) { int[][]a=newint[12][12]; for(inti=0;i<12;i++) {a[i][i]=1;a[i][0]=1;} for(inti=1;i<12;i++) { for(intj=1;j a[i][j]=a[i-1][j-1]+a[i-1][j]; } for(inti=0;i<12;i++) { for(intk=0;k<(12-i);k++) System.out.print(""); for(intj=0;j<=i;j++) { if(a[i][j]<10) System.out.print(a[i][j]+""); else if(a[i][j]<100) System.out.print(a[i][j]+""); else System.out.print(a[i][j]+""); } System.out.println(); } } } 1 11 121 1331 14641 15101051 1615201561 172135352171 18285670562881 193684126126843691 1104512021025221012045101 1115516533046246233016555111 1 11 121 1331 14641 15101051 1615201561 172135352171 18285670562881 193684126126843691 1104512021025221012045101 1115516533046246233016555111 题目: 打印出如下图案(菱形) * *** ***** ******* ***** *** * publicclassTest { publicstaticvoidmain(String[]args) { intH=7,W=7;//高和宽必须是相等的奇数 for(inti=0;i<(H+1)/2;i++) { for(intj=0;j System.out.print(""); for(intk=1;k<(i+1)*2;k++) System.out.print('*'); System.out.println(); } for(inti=1;i<=H/2;i++) { for(intj=1;j<=i;j++) System.out.print(""); for(intk=1;k<=W-2*i;k++) System.out.print('*'); System.out.println(); } } } 题目: 矩阵对角线之和 importjava.util.Scanner; publicclassTest { publicstaticvoidmain(String[]args) { Scanners=newScanner(System.in); int[][]a=newint[3][3]; System.out.println("请输入9个整数: "); for(inti=0;i<3;i++) for(intj=0;j<3;j++) a[i][j]=s.nextInt(); System.out.println("输入的3*3矩阵是: "); for(inti=0;i<3;i++) { for(intj=0;j<3;j++) System.out.print(a[i][j]+""); System.out.println(); } intsum=0; for(inti=0;i<3;i++) for(intj=0;j<3;j++) if(i==j) sum+=a[i][j]; System.out.println("对角线之和是: "+sum); } } 题目: 矩阵转置 publicclassTest { publicstaticvoidmain(String[]args) { inta[][]={{1,2,3},{4,5,6},{7,8,9}}; inti,j; for(i=1;i<3;i++) for(j=0;j<=i;j++) { intt; t=a[i][j]; a[i][j]=a[j][i]; a[j][i]=t; } for(i=0;i<3;i++) { for(j=0;j<3;j++) System.out.print(a[i][j]+""); System.out.println(); } } } 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]; inti,j; for(i=0;i<2;i++) { for(j=0;j<3;j++) { c[i][j]=a[i][j]+b[i]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 集训