问题 A: 又见素数
1.描述
输出n到m之间所有素数的个数和所有的素数
输入
两个数,n,m(n!=m),n,m均是整型
多组测试数据
输出
输出个数,和所有的素数,格式看样例。
样例输入
3 5
7 9
样例输出
2
3 5
1
7
提示
不会出现没有素数的情况且最后一个数后面没空格
2.代码
方法一
#include <stdio.h>
#include<math.h>
int main()
{
int m,n,t,i,j;
int x=0,k;
int a[100000]= {0};
while(scanf("%d %d",&n,&m)!=EOF)
{
if(n>m)
{
t=n;
n=m;
m=t;
}
int y=0;
for(i=n; i<=m; i++)
{
x=0;
for(j=2; j<=sqrt(i); j++)
{
if(i%j==0&&i!=j)
{
x=1;
a[i]=1;
}
}
if(x==0)
{
y++;
}
}
printf("%d\n",y);
int f=0;
for(i=n; i<=m; i++)
{
if(a[i]==0)
{
if(f==0)
{
printf("%d",i);
f=1;
}
else
{
printf(" %d",i);
}
}
}
printf("\n");
}
return 0;
}
方法二
#include<stdio.h>
#include<math.h>
int main()
{
int m, n, max, mix, j, i, a[30000];
while (scanf("%d %d", &m, &n) != EOF)
{
if (m < n)
{
mix = m, max = n;
}
else if (m > n)
{
mix = n, max = m;
}
int s = 0;
for (i = mix; i <= max; i++)
{
int t = 0, k = 2;
for (; k <= sqrt(i); k++)
{
if (i%k == 0)
{
t++;
}
}
if (t == 0 && i != 1)
{
a[s] = i;
s++;
}
}
printf("%d\n", s);
for (j = 0; j <= s - 1; j++)
{
printf("%d", a[j]);
if(j!=s-1)
printf(" ");
}
printf("\n");
}
}
方法三
#include<stdio.h>
#include<math.h>
int main()
{
int m, n, max, mix, j, i, a[30000];
while (scanf("%d %d", &m, &n) != EOF)
{
if (m < n)
{
mix = m, max = n;
}
else if (m > n)
{
mix = n, max = m;
}
int s = 0;
for (i = mix; i <= max; i++)
{
int t = 0, k = 2;
for (; k <= sqrt(i); k++)
{
if (i%k == 0)
{
t++;
}
}
if (t == 0 && i != 1)
{
a[s] = i;
s++;
}
}
printf("%d\n", s);
for (j = 0; j <= s - 1; j++)
{
printf("%d", a[j]);
if(j!=s-1)
printf(" ");
}
printf("\n");
}
}