计算质数


布局文件代码

<? xml version= "1.0" encoding= "utf-8" ?>
<LinearLayout xmlns: android ="http://schemas.android.com/apk/res/android"
   android :layout_width= "match_parent"
    android :layout_height= "match_parent"
    android :orientation= "vertical"
    >
    <EditText
        android :id= "@+id/etNum"
        android :layout_width= "match_parent"
        android :layout_height= "wrap_content" />
    <Button
        android :onClick= "cal"
        android :text= "点击按钮"
        android :layout_width= "wrap_content"
        android :layout_height= "wrap_content" />
</LinearLayout>


主程序代码

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<Integer> 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) ;

    }
}


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值