使用python判断101-200之间有多少个素数,并输出所有素数分别是哪些?
发布网友
发布时间:2022-04-18 03:26
我来回答
共3个回答
热心网友
时间:2022-04-18 04:56
sqrt(m)就是m的平方根。
(int)sqrt(m)就是m的平方根的整数部分。
就是说比如,要判断97是否一个素数,只要从2~9判断不能整除97,就可以下定论,97是一个素数了。
这是因为如果x能被a整除,则x必也能被x/a整除。若a<>x/a,则必有一个较小的因子<√x
若a==x/a,则必有a==√x
所以,只要从2~√m判断,就能确定m是否素数了。
#include"stdio.h"
#include"math.h"
int main()
{
int a,i,q,p=0;
float s;////////////////////////////////开方的结果不是整数
printf("101-200以内的素数:\n");
for (a=101;a<=200;a++)
{ q=0;
s=sqrt(a);
for(i=2;i<=s;i++)
{
if(a%i!=0)
q++;
}
if(q==(int(s-1)))////////////////////////////应该是-1而不是-2
{
p++;
printf("%d\n",a);
}
}
printf("素数的个数是:%d\n",p);
return 0;
}
热心网友
时间:2022-04-18 06:14
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),sqrt为开方函数,如果能被整除,则表明此数不是素数,反之是素数。
程序源代码:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
h = 0
leap = 1
from math import sqrt
from sys import stdout
for m in range(101,201):
k = int(sqrt(m + 1))
for i in range(2,k + 1):
if m % i == 0:
leap = 0
break
if leap == 1:
print '%-4d' % m
h += 1
if h % 10 == 0:
print ''
leap = 1
print 'The total is %d' % h
以上实例输出结果为:
101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 The total is 21
热心网友
时间:2022-04-18 07:48