判断一个数是否是素数,下面的程序有什么问题,求赐教

#include
int main() {
int n=0;
printf("Please input a number n:");
scanf("%d",&n);
for(int i=2;i<n;++i) {
if(n%i==0)
printf("%d 不是素数",n);
break;
if(n%i!=0)
printf("%d 是素数",n);
break;
}
return 0;
}

if(n%i!=0)
printf("%d 是素数",n);
break;

只要满足这个条件,for循环就会跳出,当然不行。
bool IsPrime(int n) {

int i;

if (n < 2)

return false;

else

{

for (i = 2; i <= n / 2.0; i++)

if (n%i == 0)

{

return false;

}

return true;

}

}

这个是判断素数的程序

建议看看这个

http://bbs.csdn.net/topics/390112352

C++程序,算法结构一样的

 #include <iostream>
#include <cmath>
using namespace std;
int main()
{
    for(int i=100;i<+200;++i)
    {
        int x=2;
        while(x<=floor(sqrt(i))&&(i%x!=0))
            ++x;
        if(x>floor(sqrt(i)))
            cout << i << "\t";
    }
    return 0;
}

问题是你得理解什么是素数,一个数字不能被除了1和它本身以外任何数整除的数才算素数,而你的程序仅仅在循环判断了一个值而不能整除,就断定是素数,那么这个怎么能对呢。

for里面改为i++不然会少判断一种情况,只要第一个if判断条件一直不满足则才有可能成为素数也就是当判断到i=n-1的时候仍然不满足就是素数,所以我们只需要第二个if判断i是否等于n-1如果是就为素数然后break

#include
#include
int main(void)
{
int count, i, m, n, sum;
int repeat, ri;
int prime(int m);

scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
    scanf("%d%d", &m, &n);
    sum=count=0;
    for(i=m;i<=n;i++)
        {
    if(prime(i)==1)
    {
        count++;sum=sum+i;
    }
        }
    printf("Count = %d, sum = %d\n", count, sum);
}
return 0;

}
int prime(int m)
{
int i;
if(m==1)
return 0;
for(i=2;i<=m-1;i++)
{
if(m%i==0) return 0;
}

return 1;
}

这是以前写的一个。希望对你有帮助

判断素数主要是从定义出发,定义:只能由1和它本身整除的是素数,你的代码
if(n%i!=0)
printf("%d 是素数",n);
break;
是错误的,这是以一概全,

 #include <stdio.h>
int main()
{
    int n;
    while(~scanf("%d", &n))
    {
        if(n <= 1) puts("NO");
        else
        {
            int flag = 0;
            for(int i = 2; i < n; i++)
            {
                if(n % i == 0)
                {
                    flag = 2;
                    break;
                }
            }
            if(flag) puts("NO");
            else puts("YES");
        }
    }
    return 0;
}

这是我简单的代码,素数判断还有其他好多方法。

 #include<stdio.h>
#include<stdlib.h>

int main() {
    int n=0,i;
    printf("Please input a number n:");
    scanf("%d",&n);
    for( i=2;i<n;++i) {
        if(n%i==0)
        {
            printf("%d 不是素数\n",n);
            break;
        }
    }
    if(i>=n) printf("%d 是素数\n",n);
    return 0;
}