java练习题

本文介绍了一种计算100的阶乘的方法,通过使用数组存储每一位上的数值,并进行特殊的进位处理来实现对大数的运算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  /*500~1000内4或7的倍数但不是4和7的公倍数之和
        for(int i=500;i<=1000;i++)
        {
           if((i%4==0&&i%7!=0)||(i%4!=0&&i%7==0))          

           {
                System.out.println(i);
            }
        }*/
       
        /*1000~2000内素数的个数
        int j=0;      
        for(int i=1000;i<=2000;i++)
        {
            boolean b=true;
            for(int k=2;k<=i/2;k++)
            {
                if(i%k==0)
                {
                    b=false;
                    break;           
                }           
            }
            if(b==true) j++;
        }      
        System.out.println(j);
         */
        /*“水仙花的个数
          int i=0;
          for(int a=100;a<1000;a++)
          {
              int b1,b2,b3;
              b1=a/100;     
       b2=(a-b1*100)/10;
              b3=a%10;
              if(a==b1*b1*b1+b2*b2*b2+b3*b3*b3)
                  i++;
          }
          System.out.println(i);
        */
          /*x和y的最大公约数和最小公倍数
          Scanner s=new Scanner(System.in);
          int t,n;
          System.out.print("输入第一个数");        
          int x=s.nextInt();      
          System.out.print("输入第二个数");         
          int y=s.nextInt();
          if(x<y)
          {
              n=y;            
          }
          else
          {
              n=x;           
          }            
         while(!(n%x==0&&n%y==0))
          {
               n++;
          }
         t=x*y/n;
         System.out.println("x和y的最大公约数:"+t);
         System.out.println("x和y的最小公倍数:"+n);        
         */
        /*个数如果恰好等于它的因子之和,找出1000以内的所有的“完数”
        System.out.println("1000以内的完数");
        int b=0;
        for(int i=1;i<=1000;i++)
        {
            int [] s=new int[500];
            int j=0,d=0;
            for(int m=1;m<i;m++)
            {
            if(i%m==0)
            {
                s[j++]=m;         
            }     
            }
            for(int k=0;k<j;k++)
            d+=s[k];
            if(i==d)  System.out.println(i);
        }
       */
        /*每个月的兔子的数量
        int s=0,t=0,j;
        for(int i=1;i<=3;i++)
            System.out.println("第"+i+"月的兔子数量:"+"2");
        //for(int m=4;m<=30;m++)
        for(int k=4;k<=30;k=k+3)
        {
        for( j=3;j<=30;j=j+3)
        {
           
            if(k>j)
            {
            s+=(k-j)*2;
            s=s+2;                  
            }        
        }
         System.out.println("第"+k+"月的兔子数量:"+s);
       for(int m=k+1;m<k+3;m++)
       {
            t=s+(m-k)*2;
            System.out.println("第"+m+"月的兔子数量:"+t);
       }
      
        }
        */

 

 

求100的阶乘

public static void main(String[] args) {
  // TODO Auto-generated method stub
   int[] a=new int[200];
   int[] b=new int[200]; //a中每个元素存储阶乘计算结果一位数,b用作进位换算
   int i,k;
     //数组初始化
   for(i=0;i<200;i++){
       a[i]=0;
       b[i]=0;
   }
               //将a[0]重新初始化为1
   a[0]=1;
                   //阶乘计算循环
   for(k=1;k<=100;k++){
                      //按位乘法循环            
        for(i=0;i<200;i++){
             b[i]=a[i]*k;
        }
                        //进位换算循环
        for(i=0;i<199;i++){         
            b[i+1]=b[i+1]+b[i]/10;
        }
                     //求得数组中的每一个新的元素,即第k次阶乘后的值
        for(i=0;i<200;i++){
            a[i]=b[i]%10;
        }
   }
     //找出数组中第一个不为零的数
     for(i=199;i>=0;i--){
         if(a[i]==0)
            i--;
         if(a[i]!=0)
            break;
     }
   
   for(;i>=0;i--)
        System.out.print(a[i]);
     }

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦里仙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值