十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
素数:
我们一直强调成都网站制作、网站设计对于企业的重要性,如果您也觉得重要,那么就需要我们慎重对待,选择一个安全靠谱的网站建设公司,企业网站我们建议是要么不做,要么就做好,让网站能真正成为企业发展过程中的有力推手。专业网站设计公司不一定是大公司,创新互联作为专业的网络公司选择我们就是放心。
质数又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除,换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数。
根据算术基本定理,每一个比1大的整数,要么本身是一个质数,要么可以写成一系列质数的乘积;而且如果不考虑这些质数在乘积中的顺序,那么写出来的形式是唯一的。最小的质数是2。
基本判断思路:
在一般领域,对正整数n,如果用2到
之间的所有整数去除,均无法整除,则n为质数。
Python 代码:
def is_prime(n):
list_num = []
for i in range(2, n):
for num in range(2, int(sqrt(n))+1):
if i % num == 0 and i != num:
break
elif i % num != 0 and num == (int(sqrt(n))):
list_num.append(i)
return list_num
Java代码:
public static boolean isPrime(long n) {
if (n = 3) {
return n 1;
}
if (n % 2 == 0 || n % 3 == 0) {
return false;
}
for (int i = 5; i * i = n; i += 6) {
if (n % i == 0 || n % (i + 2) == 0) {
return false;
}
}
return true;
}
Php代码:
function isPrime($n) {//TurkHackTeam AVP production
if ($n = 3) {
return $n 1;
} else if ($n % 2 === 0 || $n % 3 === 0) {
return false;
} else {
for ($i = 5; $i * $i = $n; $i += 6) {
if ($n % $i === 0 || $n % ($i + 2) === 0) {
return false;
}
}
return true;
}
}
C/C++代码:
bool isPrime(unsigned long n) {
if (n = 3) {
return n 1;
} else if (n % 2 == 0 || n % 3 == 0) {
return false;
} else {
for (unsigned short i = 5; i * i = n; i += 6) {
if (n % i == 0 || n % (i + 2) == 0) {
return false;
}
}
return true;
}
}
#include stdio.h
#include math.h
//判断是否为素数的函数
int isPrime(int n)
{
int i=2;
while(i=(int)sqrt(n))
{
if(n%i == 0)
return 0; //不是素数,直接返回0
else
i++;
}
return 1;
}
int main()
{
int n,i;
printf("输入一个正整数: ");
scanf("%d",n);
for(i=2;i=n;i++)
{
if(isPrime(i)) //调用函数,如果该数为素数,则输出
printf("%d ",i);
}
printf("\n");
return 0;
}
示例运行结果:
输入一个正整数: 50
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
#includestdio.h
#includemath.h
int fun(int n)
{ int i;
for(i=2;i=sqrt(n);i++)
{
if(n%i==0)
return 0;
}
return 1;
}void main()
{
int n;
printf("请输入一个数:\n");
scanf("%d",n);
if(fun(n))
printf("该素数是:%d",n);
else
printf("该数不是是素数:\n");
}
楼主的代码看的真是让我蛋疼,全局太多、函数定义和声明参数都没有类型、判断是否素数居然返回double、printf用法错误...各种我就不说了,给你修改了一下,编译运行成功,代码如下:
#includestdio.h
bool prime(int x);
int main()
{
int m,n,count=0,i,sum=0;
scanf("%d",m);
scanf("%d",n);
for(i=m;i=n;i++){
if(prime(i))
{
count++;
sum=sum+i;
}
}
printf("count=%d,sum=%d\n",count,sum);
return 0;
}
bool prime(int x)
{
int a;
bool result = false;
for(a=2;a*a=x;a++)
{
if(x%a==0)
break;
}
if(a*ax)
result = true;
return result;
}