#include <stdio.h>
#include <stdlib.h>
int fun(int m,int *k,int xx[])//int函数返回值为整数值,带星号和后面带括号的 效果一样,都是指针
{
int i=1,j=0;//i用来给数组中元素赋值,从1到m-2,j是数组的起始位置,用来遍历数组
for(;j<m-2;j++)//原题要从1到比输入数小的数为止,m-1是正好卡到上限,m-2才是小于上限
{
i=i+1;
xx[j]=i;
}
int flag=0;//用于后面的是否是素数的判断
int ss=2;//除数二开始
int sum=0;//用于记录后不是素数的数目
for(j=0;j<m-2;j++)//原题要从1到比输入数小的数为止,m-1是正好卡到上限,m-2才是小于上限
{
flag=0;
ss=2;
for(;ss<xx[j];ss++)
{
if(xx[j]%ss==0)
{
flag++;
break;//是素数,跳出当前这个小循环,然后后续判断,然后继续大循环
}
}
if(flag!=0)
{
sum++;//不是素数,sum+1
printf("%d\t",xx[j]);//把这个不是素数的数打印出来
}
}
k=sum;
return k;
}
void main()
{
int m,k=0,xx[10000];
printf("请输入上限\n");
scanf("%d",&m);
k=fun(m,k,xx);
printf("\n%d个不是素数\n",k);
}
08-13
9813
