#include "stdioh"
void main()
{
int i,j,k,min=2,max=100;
for(i=min;i<=max;i++)
{
for(j=2;j<=i/2+1;j++)
{
if(i%j==0)
break;
}
if (j > i/2+1)
printf("%d\n",i);
}
}
i/j==0改成i%j==0,是因为判断是否整除要用%
if (j > i/2+1)
printf("%d\n",i);
把这句话提出来是为了防止重复打印
#include<stdioh>
int IsPrime(int n)
{
int i;
for(i=2;i<n;i++)
if(n%i==0) return 0;
else continue;
return 1;
}
int Sum(int n)
{
int i,sum=2;
if(n<2)return 0;
else if(n==2)return 2;
else
{
for(i=3;i<=n;i+=2)
{
sum+=IsPrime(i)i:0;
}
return sum;
}
}
main()
{
int n;
printf("输入一个最大数:\n");
scanf("%d",&n);
printf("比%d小的所有质数之和SUM=%d\n",n,Sum(n));
getchar();
}
代码很简单的,在把参考代码改下就可以了
参考代码只是判断了 一个 i 是不是素数。所以本题 把参考代码输入的 i,从100循环到500,依次判断就可以了
#include <stdioh>
void main()
{
int i,j;
for(i=100;i<=500;i++)
{
for(j=2;j<i;j++)
if(i%j==0)
break;
if(j>=i)
printf("%d\t",i);
}
}
#include<stdioh>
int main()
{
int k=0,f=0;
for(int i=2;i<=1000;i++)
{
f=0;//置0,用于标记下一个非质数
for(int j=2;j<i;j++)
{
if(i%j==0)//,i能被2~i的一个数j整除,就说明 i不是质数
{
f=1;//标记,不是质数
break;
}
}
if(f==0)//未被标记,是质数
{
k++;//计数
if(k%10==0)//质数的个数是10的倍数,换行
printf("%4d\n",i);
else
printf("%4d",i);
}
}
return 0;
}
以上就是关于c语言求质数问题全部的内容,包括:c语言求质数问题、C语言求质数之和、C语言求解!3. 编写一个程序,输出100到500之间的所有素数(质数)。 结果应为:(如图)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)