#include <stdio.h>
#include <math.h>
void main()
{ int i,t,m;
for(m=1;m<=100;m=m+2)
{ t=sqrt(m);
for(i=2;i<=t;i++)
if(m%i==0) break;
if(i>t) printf("%d is a prime number .\n",m);
else printf("%d is not a prime number .\n",m);
}
getchar();
}
这是运行结果 ,高手帮我看看哪里出现了错误 ,谢谢大家!
源代码如下:
#include <stdio.h>
#include <math.h>
int main()
{
int a, b, i, flag;
printf("输入两个整数: ");
scanf("%d %d", &a, &b);
printf("%d与%d之间的素数为: ", a, b);
while(a<b)
{
flag=0;
for(i=2; i<=sqrt(a); i++)
{
if(a%i==0)
{
flag=1;
break;
}
}
if(flag==0)
printf("%d ", a);
a++;
}
return 0;
}
扩展资料
一个偶数总能表示为两个素数之和的源代码如下:
#include "stdio.h"
#include "math.h"
main()
{
int a,b,c,d;
scanf("%d",&a);
for(b=3;b<=a/2;b+=2)
{
for(c=2;c<=sqrt(b);c++)
if(b%c==0) break;
if(c>sqrt(b))
d=a-b;
else
break;
for(c=2;c<=sqrt(d);c++)
if(d%c==0)
break;
if(c>sqrt(d))
printf("%d=%d+%d\n",a,b,d);
}
}
for(int i=5;i<=sqrt(x);i+=6)
if(x%i==0||x%(i+2)==0)
{
printf("%d不是素数",x);
return 0;
}
printf("%d是素数",x);
return 0;
}
#include "stdafx.h"
#define A 100
#include <stdio.h>
void main()
{
int i,j;
int array[A];
for (i=0;i<A;i++)
array[i]=i+1;
for (i=0;i<A;i++)
{
if( array[i]!=1 )
{
for(j=i+1;j<A;j++)
{
if( array[j]%array[i]==0)
array[j]=1;
}
}
}
j=0;
for(i=0;i<A;i++)
{
if(array[i]!=1)
{
printf("%4d",array[i]);
j++;
if (j%5==0) putchar('\n');
}
}
}
运行结果:
你的程序算法实现,不是依据筛算法的原理实现的,筛选法原理如下:
“筛选法”原理:先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去...直至留下的数全为素数
#include <stdio.h>#include <math.h>
void main()
{
int i,t,m;
for(m=2; m<=100; m++)
{
t=sqrt(m);
for(i=2;i<=t;i++)
if(m%i==0) break;
if(i>t) printf("%d is a prime number .\n",m);
else printf("%d is not a prime number .\n",m);
}
getchar();
}