python-leetcode求区间[M,N]内的所有素数的个数实现方式
作者:天下·第二
这篇文章主要介绍了python-leetcode求区间[M,N]内的所有素数的个数实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
python leetcode求区间[M,N]内所有素数的个数
题目描述:
输入M、N,1 < M < N <
1000000,求区间[M,N]内的所有素数的个数。素数定义:除了1以外,只能被1和自己整除的自然数称为素数 输入描述: 两个整数M,N
输出描述: 区间内素数的个数
解法一:常规解法
def prime(m, n): prime_list = [] for i in range(m, n): for j in range(2, i): if i % j == 0: break else: prime_list.append(i) return len(prime_list)
解法二:使用python内置函数filter过滤
def all_prime_number(m, n): filter_list = filter(lambda x: not [x % i for i in range(2, x) if x % i == 0], range(m, n)) return len(list(prime_list))
输出m到n之间的全部素数
本题要求输出给定整数M和N区间内的全部素数,每行输出10个。素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。
输入格式
输入在一行中给出两个正整数M和N(1≤M≤N≤500)。
输出格式
输出素数,每个数占6位,每行输出10个。如果最后一行输出的素数个数不到10个,也需要换行。
若输入的范围不合法,则输出"Invalid."。
输入样例1:
2 100
输出样例1:
2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59 61 67 71
73 79 83 89 97
输入样例2:
6 2
输出样例2:
Invalid.
#include<stdio.h> #include<math.h> int main() { int i,limit,M,N,count,j; count=0; scanf("%d %d",&M,&N); if(M>=1&&N>=M&&N<=500) { for(i=M;i<=N;i++) { if(i==1) continue; else if(i==2){ printf("%6d",2); count++; }else{ limit=sqrt(i)+1; for(j=2;j<=limit;j++) { if(i%j==0) break; } if(j>limit){ printf("%6d",i); count++; if(count%10==0) printf("\n"); } } } }else{ printf("Invalid.\n"); } return 0; }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。