实验8Method的使用1.程序填空题,不要改变与输入输出有关的语句。50001求1+1/2!+....+1/n!输入一个正整数repeat(0repeat10),做repeat次下列运算:输入1个正整数n,计算s的前n项的和(保留4位小数)。s=1+1/2!+....+1/n!要求定义并调用函数fact(n)计算n的阶乘。例:括号内是说明输入:2(repeat=2)2(n=2)10(n=10)输出:1.51.7183importjava.util.Scanner;publicclassTest50001{publicstaticvoidmain(String[]args){intri,repeat;inti,n;doubles;Scannerin=newScanner(System.in);repeat=in.nextInt();for(ri=1;ri=repeat;ri++){n=in.nextInt();/*-----------*/s=0;for(i=1;i=n;i++)s+=1.0/fact(i);System.out.println((long)(s*10000+0.5)/10000.);}}/*---------------*/staticdoublefact(intn){inti;doublef=1;for(i=1;i=n;i++)f*=i;returnf;}}50002求a+aa+aaa+aa…a输入一个正整数repeat(0repeat10),做repeat次下列运算:输入2个正整数a和n,求a+aa+aaa+aa…a(n个a)之和。要求定义并调用函数fn(a,n),它的功能是返回aa…a(n个a)。例如,fn(3,2)的返回值是33。例:括号内是说明输入2(repeat=2)23(a=2,n=3)85(a=8,n=5)输出246(2+22+222)98760(8+88+888+8888+88888)importjava.util.Scanner;publicclassTest50002{publicstaticvoidmain(Stringargs[]){intri,repeat;inti,n,a;longsn;Scannerin=newScanner(System.in);repeat=in.nextInt();for(ri=1;ri=repeat;ri++){a=in.nextInt();n=in.nextInt();/*------------*/sn=0;for(i=1;i=n;i++)sn+=fn(a,i);System.out.println(sn);}}/*------------*/staticintfn(inta,intn){ints=0;for(inti=1;i=n;i++)s=s*10+a;returns;}}50003统计一个整数中数字的个数输入一个正整数repeat(0repeat10),做repeat次下列运算:读入1个整数,统计并输出该数中2的个数。要求定义并调用函数countdigit(number,digit),它的功能是统计整数number中数字digit的个数。例如,countdigit(10090,0)的返回值是3。例:括号内是说明输入:3(repeat=3)-219022345543输出:count=2(-21902中有2个2)count=1(有1个2)count=0(345543中没有2)importjava.util.Scanner;publicclassTest50003{publicstaticvoidmain(Stringargs[]){intri,repeat;intcount;longn;Scannerin=newScanner(System.in);repeat=in.nextInt();for(ri=1;ri=repeat;ri++){n=in.nextInt();/*---------*/n=Math.abs(n);count=countdigit(n,2);System.out.println(count=+count);}}/*------------*/staticintcountdigit(longnumber,intdigit){//统计整数number中数字digit的个数inta,c=0;while(number0){a=(int)(number%10);if(a==digit)c++;number=number/10;}returnc;}}50004判断素数输入一个正整数repeat(0repeat10),做repeat次下列运算:输入一个正整数n,如果它是素数,输出YES,否则,输出NO(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。要求定义并调用函数prime(m)判断m是否为素数。例:括号内是说明输入4(repeat=4)12917输出NO(1不是素数)YES(2是素数)NO(9不是素数)YES(17是素数)importjava.util.Scanner;publicclassTest50004{publicstaticvoidmain(Stringargs[]){intri,repeat,n;booleanflag;Scannerin=newScanner(System.in);repeat=in.nextInt();for(ri=1;ri=repeat;ri++){n=in.nextInt();/*---------*/flag=prime(n);if(flag)System.out.println(YES);elseSystem.out.println(NO);}}/*------------*/staticbooleanprime(intm){booleanflag=true;if(m==1)flag=false;for(inti=2;i=m-1;i++)if(m%i==0){flag=false;break;}returnflag;}}50005统计素数并求和输入一个正整数repeat(0repeat10),做repeat次下列运算:输入2个正整数m和n(1=m,n=500),统计并输出m和n之间的素数的个数以及这些素数的和(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。要求定义并调用函数prime(m)判断m是否为素数。例:括号内是说明输入:3(repeat=3)110(m=1,n=10)2035(m=20,n=35)1416(m=14,n=16)输出:count=4,sum=17(1到10之间有4个素数:2,3,5,7)count=3,sum=83(20到35之间有3个素数:23,29,31)count=0,sum=0(14到16之间没有素数)importjava.util.Scanner;publicclassTest50005{publicstaticvoidmain(Stringargs[]){intri,repeat;intcount,i,m,n,sum;Scannerin=newScanner(System.in);repeat=in.nextInt();for(ri=1;ri=repeat;ri++){m=in.nextInt();n=in.nextInt();/*---------*/count=0;sum=0;for(i=m;i=n;i++)if(prime(i)){count++;sum+=i;}System.out.println(count=+count+,sum=+sum);}}/*------------*/staticbooleanprime(intm){booleanflag=true;if(m==1)flag=false;for(inti=2;i=m-1;i++)if(m%i==0){flag=false;break;}returnflag;}}50006输出Fibonacci序列输入一个正整数repeat(0repeat10),做repeat次下列运算:输入2个正整数m和n(1=m,n=10000),输出m和n之间所有的Fibonacci数。Fibonacci序列(第1项起):1123581321......要求定义并调用函数fib(n),它的功能是返回第n项Fibonacci数。例如,fib(7)的返回值是13。输出语句:System.out.print(f+);例:括号内是说明输入:3(repeat=3)110(m=1,n=10)20100(m=20,n=100)10006000(m=1000,n=6000)输出:112358(1到10之间的Fibonacci数)21345589(20到100之间的Fibonacci数)159725844181(1000到6000之间的Fibonacci数)importjava.util.Scanner;publicclassTest50006{publicstaticvoidmain(Stringargs[]){intri,repeat;inti,m,n;longf;Scannerin=newScanner(System.in);repeat=in.nextInt();for(ri=1;ri=repeat;ri++){m=in.nextInt();n=in.nextInt();/*---------*/i=1;f=1;while(f=n){if(f=m)System.out.print(f+);i++;f=fib(i);}System.out.println();}}/*------------*/staticlongfib(intn){//返回第n项Fibonacci数inti;longa=1,b=1,f=1;for(i=3;i=n;i++){//从第3项开始计算f=a+b;a=b;b=f;}returnf;}}50007求完数输入一个正整数repeat(0repeat10),做repeat次下列运算:输入2个正整数m和n(1=m,n=10000),输出m到n之间的所有完数(完数就是因子和与它本身相等的数)。要求定义并调用函数factorsum(number),它的功能是返回number的因子和。例如,factorsum(12)的返回值是16(1+2+3+4+6)。输出语句:System.out.print(i+);例:括号内是说明输入:2(repeat=2)20500(m=100,n=400)1100(m=1,n=100)输出:284961628importjava.util.Scanner;publicclassTest50007{publicstaticvoidmain(Stringargs[]){intri,repeat;inti,m,n;Scannerin=newScanner(System.in);repeat=in.nextInt();for(ri=1;ri=repeat;ri++){m=in.nextInt();n=in.nextInt();/*---------*/for(i=m;i=n;i++)if(i==factorsum(i))System.out.print(i+);System.out.println();}}/*---------*/staticintfactorsum(intnumber){//返回number的因子和intsum=0;if(number==1)sum=1;for(inti=1;i=number-1;i++)if(number%i==0)sum+=i;returnsum;}}50008求各位数字的立方和等于它本身的数输入一个正整数repeat(0repeat10),做repeat次下列运算:输入2个正整数m和n(1=m,n=1000),输出m到n之间的所有