C语言程序(输入两个数 a b 求ab之间的质数并且输出所有质数之和)
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/06 05:44:41
C语言程序(输入两个数 a b 求ab之间的质数并且输出所有质数之和)
C语言程序(输入两个数 a b 求ab之间的质数并且输出所有质数之和)
C语言程序(输入两个数 a b 求ab之间的质数并且输出所有质数之和)
//基础题 看看吧
#include
#include
bool prim(int n)
{
if(n
可惜现在是忙碌时期没有那么多时间来弄
/*
我这个用了筛选法求素数和素数和,如果做ACM,暴力法肯定会超时。筛选法可以大大缩短间。
这个代码可以求一百万以内的素数和素数和。
*/
#include
#define max 1000000
bool prime[max+1];
__int64 sum[max+1];
int main()
{
全部展开
/*
我这个用了筛选法求素数和素数和,如果做ACM,暴力法肯定会超时。筛选法可以大大缩短间。
这个代码可以求一百万以内的素数和素数和。
*/
#include
#define max 1000000
bool prime[max+1];
__int64 sum[max+1];
int main()
{
__int64 tmp=0;
int a,b,i,j;
prime[0]=prime[1]=1;
sum[1]=0;
for(i=2;i<=max;i++)
{
if(!prime[i])
{
for(j=i+i;j<=max;j+=i)
prime[j]=1;
tmp+=i;
}
sum[i]=tmp;
}
while(scanf("%d%d",&a,&b)!=EOF)
{
if(a>b)
{
tmp=a;
a=b;
b=tmp;
}
for(i=a;i<=b&&prime[i];i++);
printf("%d",i);
for(i++;i<=b;i++)
if(!prime[i]) printf(" %d",i);
printf("\n%I64d\n",sum[b]-sum[a-1]);
}
return 0;
}
收起
#include
int main() //主函数
{
int flag, a,b; //flag标志是否为质数 这里设定b>a
printf("请依次输入a,b两个整数,注意ascanf("%d %d",&a,&b);
for (in...
全部展开
#include
int main() //主函数
{
int flag, a,b; //flag标志是否为质数 这里设定b>a
printf("请依次输入a,b两个整数,注意ascanf("%d %d",&a,&b);
for (int i=a;i<=b;i++) //从a开始到b之间的所有数
{
flag=0; //初始化,为质数
for (int j=2;j<=i/2;j++) //从除以2开始,一直除以到i/2,(例如9/7定不能整除)
{
if (!(i %j) ) //如果整除(%为取余数)
{
flag=1; //制标志为1(不为质数)
break; //跳到a-b的下一个数
}
}
if (flag==0) printf("%d\n",i); //如果从除以2开始,一直除以到i/2都不能整除,则为质数,打印出来。
}
}
收起