我有一个程序可以在用户输入范围(m,n)内打印五个素数。
我的问题是我要打印大于m的数字。并且只打印下五个数字。我不想使用上限。
我怎么能这样做?
#include <stdio.h>
#include <conio.h>
int main()
{
int m,n,i,j,k,flag;
printf("\nEnter The Lower Limit: ");
scanf("%d",&m);
printf("\nEnter The Upper Limit: ");
scanf("%d",&n);
printf("\nPrime Numbers Between %d & %d Are:\n",m,n);
for(i=m ; i<=n ; i++)
{
k=i;
flag=1;
for(j=2 ; (j<=k/2)&&flag ; j++)
{
if(k%j==0)
flag=0;
}
if(flag)
printf("%3d \n",i);
}
}
答案 0 :(得分:2)
为什么不简单地计算您打印的素数?
int count = 0; : for(i=m ; (i<=n) && (count<5) ; i++) : if(flag) { printf("%3d \n",i); count++; }
PS,使用比单个字符更长的名称将有助于使您的程序更容易理解。
答案 1 :(得分:0)
无论您喜不喜欢,您都有更高的限制,这是由您使用的数据类型设置的 - &gt;在您的情况下, int 。想象一下,你希望前5个素数大于(MAXINT-10)...你得到了重点,但我们假设你不关心角落情况。
int count=0;
int i=m;
int k;
while (count<5)
{
k=i;
flag=1;
for(j=2 ; (j<=k/2)&&flag ; j++)
{
if(k%j==0)
flag=0;
}
if(flag)
{
printf("%3d \n",i);
count++;
}
i++;
}