素数:
成都创新互联公司长期为近千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为可克达拉企业提供专业的网站建设、做网站,可克达拉网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。
质数又称素数,有无限个。一个大于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;
}
}
素数是只有1和自身才能整除的数。调用自定义的函数prime,对100~200间的奇数进行判断,是素数则输出。举例代码如下:
#include "stdio.h"
int prime(int n){//判断100~200间的数是否为素数
int i;
if(!(n1))
return 0;
for(i=3;i*i=n;i+=2)
if(!(n%i))
return 0;
return 1;
}
int main(int argc,char *argv[]){
int n;
for(n=101;n200;n+=2)
if(prime(n))//调用prime判断n是否为素数
printf("%4d",n);//是则输出n
printf("\n");
return 0;
}
#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 prime(int a,int b)//求出整数a-b范围内的所有素数
{
int i=2,j,n;
for(j=a;j=b;j++)
{
n=sqrt(j)+1; //j的平方数+1
i=2;
while(in)
{
if(j%i==0) //整除,退出循环
break;
i++;
}
if(i==n) //非整除退出循环,i肯定等于n
printf("%d ",j); //j是素数,输出
}
}
int main()
{
int a,b;
scanf("%d%d",a,b); //输入整数范围a-b
prime(a,b);
return 0;
}
楼主的代码看的真是让我蛋疼,全局太多、函数定义和声明参数都没有类型、判断是否素数居然返回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;
}
#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");
}