急求一个小程序:
要求输入一个一百位以上的数字n,求n的e次方再除以d的余数
其中n可以用随机数获取(输入一个种子),e和d是自己输入的数字有界面的再送100分
界面至少有三个框框,分别输入三个数,有一个按钮用来求值

解决方案 »

  1.   

    http://ju.qihoo.com/topframe/dingzhen.php?ju=978662&ml=978906&u=ebe6199cc86f185d9b9c031702781b84&r=978714&d=978822
      

  2.   

    public class math2 {
        private double n;
        private double e;
        private double d;    public math2(String str1,String str2,String str3)
        {       n=Double.parseDouble(str1);
          e=Double.parseDouble(str2);
           d=Double.parseDouble(str3);
        }
     /*
        public double get_n()
        {
          return(this.n);
        }
        public double get_e()
       {
         return(this.e);
       }
       public double get_d()
       {
         return(this.d);
       }
     */
        public double act()
        {
        double r=Math.pow(n,e);
        System.out.print(d);
        r=r%d;
        return(r);
        }   public static void main(String [] args)
       {
     String str1 = JOptionPane.showInputDialog("enter n:");
     String str2=JOptionPane.showInputDialog("enter e:");
     String str3=JOptionPane.showInputDialog("enter d:");
          math2 m=new math2(str1,str2,str3);
           double r;
           r=m.act();
          JOptionPane.showMessageDialog(null,"the result is"+r,"result",JOptionPane.INFORMATION_MESSAGE);   }
    }
    不理解你的意思 大概写了一下 LZ参考一下好了
      

  3.   

    楼主这道题要干嘛,这么热的天折磨计算机啊!100位以上的数字,求次方再求余,CPU要累爬下的!!to: tdy1234
    精度不够啊,100位以上的数字,使用 double 类型会损失精度的,应改用 BigInteger 或 BigDecimal 的。
      

  4.   

    呵呵 TO楼上的兄弟 随便写一下,给思路而已,100位以上MS应该理解成为百位数 要是按照你们的理解  还要乘方 差点的CPU不直接当掉
      

  5.   

    差点的 CPU 当掉!我看好的也得当掉,又不是什么小型机、中型机的。100位的数字光2次方一下就有10000位了,就已经不是能够理解的数字了,况且要命的是冪次还是输入的,随便怎么说不可能会比2小的数字吧,再高一点的话那还了得。最要命的还是做好次方再求余,你们说 CPU 不趴下去谁趴下!!
      

  6.   

    import java.awt.GridLayout;public class ModeCalculate extends java.awt.Dialog {
        
        public ModeCalculate(java.awt.Frame parent, boolean modal) {
            super(parent, modal);
            initComponents();
        }
        
        private void initComponents() {
            label11 = new java.awt.Label();
            textN = new java.awt.TextField();
            label12 = new java.awt.Label();
            textE = new java.awt.TextField();
            label13 = new java.awt.Label();
            textD = new java.awt.TextField();
            button = new java.awt.Button();
            label14 = new java.awt.Label();        addWindowListener(new java.awt.event.WindowAdapter() {
                public void windowClosing(java.awt.event.WindowEvent evt) {
                    closeDialog(evt);
                }
            });
            label11.setText("输入n:");
            label12.setText("输入e:");
            label13.setText("输入d:");
            button.setLabel("计算");
            button.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    button3ActionPerformed(evt);
                }
            });        label14.setText("");
            this.setLayout(new GridLayout(4, 2));
            this.add(label11);
            this.add(textN);
            this.add(label12);
            this.add(textE);
            this.add(label13);
            this.add(textD);
            this.add(button);
            this.add(label14);
            this.setSize(500,600);
            pack();
        }    private void button3ActionPerformed(java.awt.event.ActionEvent evt) {
    label14.setText("");
    long n = Long.parseLong(textN.getText());
    long d = Long.parseLong(textD.getText());
    long e = Long.parseLong(textE.getText());
    label14.setText(""+calculate(n, d, e));
        }
       
        private long calculate(long n, long d, long e) {
    if (e == 1)
        return n%d;
    return (n*calculate(n, d, e-1))%d;
        }    private void closeDialog(java.awt.event.WindowEvent evt) {                             
            setVisible(false);
            dispose();
        }                                public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new ModeCalculate(new java.awt.Frame(), true).setVisible(true);
                }
            });
        }
        
        private java.awt.Button button;
        private java.awt.Label label11;
        private java.awt.Label label12;
        private java.awt.Label label13;
        private java.awt.Label label14;
        private java.awt.TextField textN;
        private java.awt.TextField textE;
        private java.awt.TextField textD;
    }

    n=9999999999999999
    e=1234
    d=88888883333
    结果:4869171364
    都没问题,只是e不能取的太大,太大堆栈就泻了,哈哈