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;
} 总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
