找到素数会给我错误

时间:2013-04-05 07:23:57

标签: c

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

#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;
}

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

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

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

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

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

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

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

为什么?

2 个答案:

答案 0 :(得分:0)

  

如果((K == 2)及;&安培;(K == 1))

在今天的计算机中,k无法同时为2 1。也许你想说k是2 OR k是1?

答案 1 :(得分:0)

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

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

(并且,正如其他人所指出的那样,最终测试需要||运算符而非&&