这是C中的一个程序,用于查找指定范围内的所有素数。
#include<stdio.h>
void prime(int low,int high)
{
int rem,a,b,g;
printf("The prime numbers in this range are: \n");
if(low==1)
low++;
if(low==0)
low=low+2;
for(a=low;a<=high;a++)
{
rem=1;
for(b=2;b<a-1;b++)
{
g=a%b;
rem=rem*g;
}
if(rem!=0)
printf("%d \n",a);
}
}
int main()
{
int i,j;
printf("Enter the lower limit of the range \n");
scanf("%d",&i);
printf("Enter the higher limit of the range \n");
scanf("%d",&j);
prime(i,j);
return 0;
}
正在编译程序时没有任何问题,但有一个运行时错误如下:
和第29行是
prime(i,j);
这是渲染的输出:
有人可以告诉我出了什么问题吗?
答案 0 :(得分:1)
以下提议的代码:
现在建议的代码:
https://api.telegram.org/bot<YOUR_API_TOKEN>/setwebhook?url=<HTTPS_url_to send_updates_to>&max_connections=20&allowed_updates=["callback_query","inline_query"]
但是,如果#include <stdio.h> // scanf(), printf(), perror()
#include <stdlib.h> // exit(), EXIT_FAILURE
void prime( int low, int high )
{
int b;
int g;
int r;
printf("The prime numbers in this range are: \n");
for(int a=low; a<=high; a++)
{
r=0;
for(b=2; b<a-1; b++)
{
g=a%b;
if(g==0)
break;
r++;
}
if(r==a-3)
printf("%d \n",a);
}
}
int main( void )
{
int low =60;
int high =80;
printf("Enter the lower limit of the range \n");
if( 1 != scanf("%d",&low) )
{
perror( "scanf for first number failed" );
exit( EXIT_FAILURE );
}
// implied else, scanf successful
printf("Enter the higher limit of the range \n");
if( 1 != scanf("%d",&high) )
{
perror( "scanf for second number failed" );
exit( EXIT_FAILURE );
}
// implied else, scanf successful
if( low < 0 || low > high )
{
printf( "the numbers must be >= 0 and the first number: %d must be <= the second number: %d\n", low, high );
}
else
{
prime( low, high );
}
return 0;
}
写成如下:
prime()
然后代码正常工作(直到达到某些溢出值)
这是一段最终更正的代码:
void prime( int low, int high )
{
int b;
int g;
printf("The prime numbers in this range are: \n");
for(int a=low; a<=high; a++)
{
for(b=2; b<a-1; b++)
{
if( !(g = (a%b) )
break;
}
if( g )
printf("%d \n",a);
}
}
答案 1 :(得分:0)
我的问题已得到解决,这要归功于我收到的精彩和重要的评论。特别感谢Felix Palmen,Coldspeed,Jack,Weather Vane和其他我忘记提及的人。
最终代码运行良好且运行没有问题如下:
#include<stdio.h>
void prime(int low,int high)
{
int a,b,g,r;
printf("The prime numbers in this range are: \n");
if(low==1)
low++;
if(low==0)
low=low+2;
for(a=low;a<=high;a++)
{
r=0;
for(b=2;b<a;b++)
{
g=a%b;
if(g==0)
break;
r++;
}
if(r==a-2)
printf("%d \n",a);
}
}
int main()
{
int i,j;
printf("Enter the lower limit of the range \n");
scanf("%d",&i);
printf("Enter the higher limit of the range \n");
scanf("%d",&j);
prime(i,j);
return 0;
}