为什么我这个代码求不了素数
#include<stdio.h>voidmain()
{
int i,num;
bool flag=1;
printf("请输入一个数:\n");
scanf("%d",&num);
for(i=2;i<num/2;i++)
{
if(num%i==0){flag==0;}
}
if(flag)
{
printf("%d这个数是素数\n",num);
}
else
{
printf("%d这个数不是素数\n",num);
}
}
看不懂你这个 bool flag=1; 是什么意思;
#include<stdio.h>
void main()
{
int i,num;
printf("请输入一个数:\n");
scanf("%d",&num);
for(i=2;i<=num/2;i++)
{
if(num%i==0)
{
printf("%d这个数不是素数\n",num);
break;
}
if(i>=num/2)
{
printf("%d这个数是素数\n",num);
}
}
}
这个好像可以 楼主的代码是正确的,出问题的地方应该是没有考虑 0 和 1,这两个数应该都不是素数,却会被判定为素数。
代码我给修改了一下,增加了对 0、1 的判断,楼主可以测试一下:
#include <stdio.h>
#include <math.h>
bool prime(int n)
{
int i ;
bool ret ;
ret = false ;
if(n > 1) {
for(ret = true , i = 2 ; i < (int) sqrt(n) + 1 ; i ++) {
if(! (n % i)) {
ret = false ;
break ;
}
}
}
return ret ;
}
int main(void)
{
int num ;
printf("请输入一个数:\n") ;
scanf("%d" , & num) ;
if(prime(num)) printf("%d 是素数\n" , num) ;
else printf("%d 不是素数\n", num) ;
}
兄弟,程序不错,就是粗心了点,首先for()循环中少判断了一下,for(i=2;i<num/2;i++)里判断条件应加个=号,还有就那个flag==0应改为flag=0;原因你懂得
页:
[1]