zoukankan      html  css  js  c++  java
  • Python和Java编程题(三)

    1.题目:判断101到200之间有多少个素数,并输出所有素数

    题目分析:判断一个数是否为素数,只需要判断这个数有没有除1和它自身外的其他因数。因此,判断这个数能否被2-它的平方根中的任意一个数整除即可。

    题目来源:http://blog.sina.com.cn/s/blog_60fafdda0100wb21.html

    程序主要两个主体,一个是对101到200之间的数进行循环,一个是对每个数进行判断。

    Java代码实现:

     1 public class FindPrimeNumber {
     2     /*
     3      * 定义方法FindCount寻找m~n之间的素数 
     4      */
     5     int FindCount(int m,int n){
     6         int Count = 0;
     7         for(int i=m;i<=n;i++) {// 对m~n间的每个数进行判断
     8             int flag = 1;
     9             for(int j=2;j<=i/2;j++) {//判断这个数是否为素数
    10                 if(i%j==0) {
    11                     flag = 0;
    12                     break;
    13                 }
    14             }
    15             if(flag==1) {
    16                 Count += 1;
    17                 System.out.print(i+",");
    18             }
    19         }
    20         return Count;
    21     }
    22     /*
    23      * 上面这个方法其实可以分成两个方法,一个方法对m~n之间的数进行循环
    24      * 一个方法判断这个数是否为素数
    25      * 
    26      */
    27     
    28     public static void main(String args[]) {
    29         FindPrimeNumber x = new FindPrimeNumber();
    30         int m=101,n=200;
    31         int Sum = x.FindCount(m, n);
    32         System.out.println("");
    33         System.out.printf("%d到%d之间有%d个素数",m,n,Sum);
    34     }
    35 }

    对于Java,如果通过定义两种方法而不是单纯一种方法解决问题,代码应该会更加简洁一些

    Python实现:

     1 # -*- coding: utf-8 -*-
     2 import math
     3 '''
     4 判断x是否为素数,只需对2~sqrt(x)这些数进行判断即可(也可以对2~n/2进行判断)
     5 因为若是有大于sqrt(x)的因数,则必然存在相对应的小于sqrt(x)的因子
     6 使用sqrt()和ceil()方法,因此导入math模块
     7 '''
     8 def FindPrimeNumber(m, n):
     9     Sum = 0;
    10     for x in range(m,n+1):# 对m~n间的数进行循环判断
    11         flag = True
    12         for i in range(2,math.ceil(math.sqrt(x))+1):#这里一定要将sqrt(x)包含进循环之中
    13             if x%i == 0:# 除了1和它本身以外不再有其他因数,称为素数
    14                 flag = False
    15                 break
    16         if flag == True:
    17             Sum = Sum + 1
    18             print(str(x)+",",end="")#这里使用end=""能控制输出不自动换行
    19     return Sum;
    20 
    21 if __name__ == '__main__':
    22     M = 101
    23     N = 200
    24     Count = FindPrimeNumber(M, N)
    25     print('
    {}和{}之间有{}个素数'.format(M, N, Count))
  • 相关阅读:
    springboot之手动控制事务
    Java的几种常见排序算法
    Java之协程(quasar)
    中文字符和中文标点符号的正则表达式
    【转】SignalR与ActiveMQ结合构建实时通信
    【转】根据Quartz-Cron表达式获取最近几次执行时间
    【转】IIS请求筛选模块被配置为拒绝超过请求内容长度的请求
    【转】C# 中Linq查询所有上级节点或所有下级节点
    【转】FluentAPI详细用法
    【转】SQL数据库日志文件收缩
  • 原文地址:https://www.cnblogs.com/xiang9286/p/9682891.html
Copyright © 2011-2022 走看看