我想打印给定数字范围的除数。它工作正常。但是当我尝试修改它以将****
放在素数的除数的末尾时,它就像奇怪的那样。
#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
为什么?
答案 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;
(并且,正如其他人所指出的那样,最终测试需要||
运算符而非&&