C程序打印下五个素数

时间:2013-11-20 08:36:11

标签: c gcc

我有一个程序可以在用户输入范围(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);
 }


}

2 个答案:

答案 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++;
}