重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#include "stdio.h"
创新互联长期为上千客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为雷州企业提供专业的网站制作、做网站,雷州网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。
#include "math.h"//判断一个整数是否为素数
bool prime(int x)
{
int i;
for(i=2;i= sqrt(x);i++)
{
if(x%i==0)
return false;
}
return true;
} //判断一个整数(1位或多位)是否每一位都是素数
bool allPrime(int a)
{
if(prime(a%10)) //如果个位是素数
{
a=a/10;
return allPrime(a);
}
else
return false;
}// 打印出1-5000内满足题意的素数
void printPrime()
{
int i;
int a=0;
for( i=11;i5000;) // 1-9 不用再判断了,只有一位。10和5000很明显也不用去判断了,不是素数
{
if(prime(i)) // 如果i是素数,判断个位是不是素数,如果个位不是,不满足第二个条件
{
if(prime(i%10)) //判断个位
{
a=i/10 ; //a就是去掉个位后的数
if(prime(a)) //判断a 是否是素数,如果是,再判断a每一位是否是素数
{
if(allPrime(a))
printf("%d\n",i);
} }
}
i+=2;
}
}int main()
{
printPrime();
}
先编写一个判断素数的函数,类型为bool型
bool Isprime(int number)
{
for (int i = 2; i number; i++)
if (number mod i != 0)
return false;
return true;
}
上面的代码还可以继续优化,只是给你提供个思路
然后在主函数里面循环调用这个函数 比如数组num[N] 循环N次,将num[i] 作为参数调用上面的函数,然后看返回值,如果未true 素数的个数+1,就可以了
楼主的代码看的真是让我蛋疼,全局太多、函数定义和声明参数都没有类型、判断是否素数居然返回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;
}