-2

我想打印给定数字范围的除数。它工作正常。但是当我尝试修改它以放在****素数除数的末尾时,它的行为就像是奇怪的。

#include <stdio.h>
int main()
{
    int     a,start,rounds,b,c,k=0;

    printf("Please enter a number to start :");
    scanf("%d",&start);
    printf("Please enter how many numbers you want to print from that number :");
    fflush(stdin);
    scanf("%d",&rounds);

    for(a=start;a<=start+rounds;a++)
    {
         printf("\n\nThe divisors of number :%d are \n",a);

         for(b=1;b<=a;b++)
         {
             c=a%b;
             if(!c)
             {
                  k++;
                  printf("%d\n",b);
             }
          }
          //printf("%d",k);
          if((k==2)||(k==1))
             printf("***\n");
    }
    getchar();
    return 0;
}

printfPS:-我用来查找素数的技巧是计算循环结束之前执行了多少条语句。它有什么问题吗?当我//printf语句中删除时,它会打印如下。

start=========>k

  1   =========>1

  2   =========>3

  3   =========>5

  4   =========>8

  5   =========>10

这是为什么?

4

2 回答 2

0

如果((k==2)&&(k==1))

在当今的计算机中,k 不可能同时为 21。也许您的意思是说 k 是 2还是k 是 1 ?

于 2013-04-05T07:29:51.913 回答
0

您需要k在外循环中重置回 0

printf("\n\nThe divisors of number :%d are \n",a);
k = 0;

(而且,正如其他人指出的那样,您需要一个||操作员而不是&&最终测试)

于 2013-04-05T07:30:45.627 回答