#include <stdio.h>
int main()
{
int m,n,count =0,j;
scanf("%d%d",&m,&n);
for(int i=m;i<=n;i++)
{
if(i<2)
continue;
for(j=2;j<i;j++)
{
if(i%j==0)
break;
}
if(j==i)
{
count++;
printf("%d ",i);
}
}
if(count==0)
printf("Not Found");
}
问题有点多
1.printf("%d",&i);//&是取地址符,在这打印的是i的地址所以要去掉&变成printf("%d",i);
2.if(i%j==0){printf..........break;}//if语句后面不加大括号默认只有下一个语句为子程序。而且j<i,应该要反过来,得到的是非素数
下面贴另一个方法的:
#include <stdio.h>
int prime(int x,int y);
int main()
{
int a,b;
printf("please input two numbers \n");//从小到大
scanf("%d %d",&a,&b);//两个数用空格隔开
prime(a,b);//调用函数
return 0;
}
int prime(int x,int y)
{
int i,j,k,cout;
cout=0;
for(i=x;i<=y;i++)//从最大的数到最小的数
{
k=1;
for(j=2;j<=i/2;j++)
{
if(i%j==0) //非素数
{
k=0;
break;
}
}
if(k)//素数
{
printf("%d \n",i);//素数打印出来
cout++; //统计素数的个数
}
}
printf("there are %d numbers from %d to %d \n",cout,x,y);
return 0;
}
下次程序的不要拍照😭看的难受不说还难调试,尽量用代码块或者复制粘贴也行