编写函数int fun (int lim, int aa[MAX] ),该函数的功能是求出小于lim的所有素数并放在aa数组中,该函数返回所求出素数的个数。然后编写主函数调用它。
#include<stdio.h>
int fun(int lim, int aa[])
{
int i, j = 0, s = 2, n = 0;
for (i = 3; i <= lim; i++)
{
for (j = 2; j <= i; j++)
{
if (i % j == 0)break;
}
if (j > i - 1)
{
s++;
aa[n] = i;
}
}
return s;
}
int main()
{
int aa[100], lim, s;
scanf_s("%d", &lim);
s = fun(lim, aa);
printf("%d", s);
return 0;
}
我能理解你想偷懒所以把2当做默认的素数,不过s初始化要为1
s=1
后面n每次要加1
aa[n++]=i;
你的s初始化为2,你是怎样考虑的呢,你的i从3开始,3之前的素数只有2一个,应该初始化s=1才对吧
s不应该初始化为2,3之前的素数只有2一个,1既不是素数也不是偶数,将s初始化为1就可以了
供参考:
#include<stdio.h>
int fun(int lim, int aa[])
{
int i, j = 0, s = 0, n = 0, flg;
for (i = 1; i <= lim; i++) //for (i = 3; i <= lim; i++)
{
for (j = 2, flg = 1; flg && j < i; j++) //for (j = 2; j <= i; j++)
{
if (i % j == 0) flg = 0; //break;
}
if (flg && i != 1) //if (j > i - 1)
{
s++;
aa[n++] = i; //aa[n] = i;
}
}
return s;
}
int main()
{
int aa[100] = {0}, lim, s;
scanf_s("%d", &lim);
s = fun(lim, aa);
printf("%d", s);
return 0;
}