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('\n{}和{}之间有{}个素数'.format(M, N, Count))

 

posted @ 2018-09-20 19:44  埃克斯诶尔  阅读(218)  评论(0编辑  收藏  举报