#include <stdio.h>
#include <string.h>
#define true 1
#define false 0
#define max 100000
int zhishu_1( long int *str)
{
long int c;
int i=0;
int k=0;
int j=0;
int len=0;
int num=0;
long int *temp;
long int *p;
temp=str;
while(*(str++)!=0)
{
len++;
}
str=temp;
printf("%d is length\n",len);
// code section 1
for(k=3;k<len;k++)
{
for(i=2;i<=k;i++)
{
if(*(str+k)%i==0)
{
*(str+k)=0;
}
}
}
//code section 2
/*
for(k=3;k<len;k++)
{
for(j=1;j<=k;j++)
{
if(*(str+k)%*(str+j)==0)
{
*(str+k)=0;
}
}
}
*/
printf("step 1 is done\n");
str=temp;
for(k=1;k<len-1;k++)
{
if(*(str+k)!=0)
{
num++;
}
}
printf("%d= is zhishu geshu ",num);
}
int main()
{
long int buf[max];
int x,y;
for(x=1;x<=max;x+=1)
{
buf[x-1]=x;
}
zhishu_1(buf);
return 0;
}
用指针求10万内的质数个数,方法是看这个数能不能整除2到n-1之间的数,但是使用指针整除指针时取余,运行无结果,使用指针除整数取余时运行结果正常的原因是什么?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
zhuabashou1 2021-08-12 14:22关注问题点在于 code section2 的(str+k)%(str+j)这里如果j<=1,也可以正常运行,大于1就运行无结果,返回值是一个long int 的大小。
解决 无用评论 打赏 举报