计算质数

计算质数_第1张图片


布局文件代码



    
    


主程序代码

package com.eson.calprime ;

import android.os.Bundle ;
import android.os.Handler ;
import android.os.Looper ;
import android.os.Message ;
import android.support.v7.app.AppCompatActivity ;
import android.view.View ;
import android.widget.EditText ;
import android.widget.Toast ;

import java.util.ArrayList ;
import java.util.List ;

public class CalPrime extends AppCompatActivity {

    static final String UPPER_NUM= "upper" ;
    CalThread calThread ;
    private EditText etNum ;

    class CalThread extends Thread{

        public Handler mHandler;
        public void run (){
            Looper.prepare ();
            mHandler = new Handler(){
                //定义处理消息的方法
                @Override
                public void handleMessage (Message msg) {
                    if (msg. what ==0x123 ){
                        int upper=msg.getData().getInt( UPPER_NUM) ;
                        List nums= new ArrayList<>();
                        //计算从2开始,到upper的所有质数
                        outer:
                        for (int i = 2; i <=upper ; i++) {
                            //用i除以2开始,到i的平方根的所有数
                            for (int j = 2; i <=Math. sqrt(i) ; i++) {
                                //如果可以整除,则表明这个数不是质数
                                if (i!=2 &&i%j== 0){
                                    continue outer;
                                }

                            }
                            nums.add(i) ;
                        }
                        //使用Toast显示统计出来的所有质数
                        Toast. makeText(CalPrime. this,nums.toString() , Toast. LENGTH_LONG).show() ;
                    }
                }
            };
            Looper. loop() ;
        }
    }

    @Override
    protected void onCreate (Bundle savedInstanceState) {
        super .onCreate(savedInstanceState) ;
        setContentView(R.layout. content_main );
        etNum = (EditText) findViewById(R.id. etNum );
        calThread = new CalThread() ;
        //启动线程
        calThread .start() ;
    }
    //为按钮点击事件提供事件处理函数
    public void cal (View v){

        //创建消息
        Message msg= new Message();
        msg. what =0x123 ;
        Bundle bundle= new Bundle();
        bundle.putInt( UPPER_NUM ,Integer. parseInt( etNum .getText().toString()));
        msg.setData(bundle) ;
        //向新线程中的Handler发送消息
        calThread . mHandler.sendMessage(msg) ;

    }
}


你可能感兴趣的:(计算质数)