用C语言编写一个程序,设计一个判断素数的函数

#include <stdio.h>
int prime(int n)
{int flag=1,i;
for(i=2;i<=n/2&&flag==1;i++)
if(n%i==0)
flag=0;
return(flag);
}
void main()
{int x,y;
printf("请输入一个数\n");
scanf("%d",&x);
y=prime(x);
if (y=1) printf("这个数是素数\n");
else printf("这个数不是素数\n");
}

小弟这个程序自己检查不出来哪里错了 输入什么数都判断成素数 可自己就看不出来哪错了

1.素数是一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数;

2.在数据处理时只需要判读他的因子除了1和他本身就行了,而且只用计算到 这个数的开方就行了,因为后面的因子和前面的就会倒过来。如同 24 -> 2 x 12 和 12 x 2 一样。

#include<stdio.h>

int IsPrime(int n)  // åˆ¤æ–­æ˜¯å¦ä¸ºç´ æ•°
{
    if (n <= 1) return 0;
    if (n % 2 == 0) return n == 2; // å¦‚果是偶数,只要不是2,其他都是非素数

    for (int i = 3; ; i += 2)
    {
        if (i > n/i) break;  // ç­‰ä»·äºŽ i*i > n, ä¸ç”¨å¼€æ–¹
        if (n % i == 0) return 0;
    }
    return 1;
}

int main()
{
    int i, cnt = 0;
    for (i = 1; i < 100; i++)
    {
        if (IsPrime(i))
        {
            printf("%3d ", i);
            if (++cnt%5 == 0)   // æ¯5个换行
                printf("\n");
        }
    }
    return 0;
}


温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-06-18
1.素数是一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数;
2.在数据处理时只需要判读他的因子除了1和他本身就行了,而且只用计算到
这个数的开方就行了,因为后面的因子和前面的就会倒过来。如同
24
->
2
x
12

12
x
2
一样。
#include<stdio.h>
int IsPrime(int n) // 判断是否为素数
{
if (n <= 1) return 0;
if (n % 2 == 0) return n == 2; // 如果是偶数,只要不是2,其他都是非素数
for (int i = 3; ; i += 2)
{
if (i > n/i) break; // 等价于 i*i > n, 不用开方
if (n % i == 0) return 0;
}
return 1;
}
int main()
{
int i, cnt = 0;
for (i = 1; i < 100; i++)
{
if (IsPrime(i))
{
printf("%3d ", i);
if (++cnt%5 == 0) // 每5个换行
printf("\n");
}
}
return 0;
}
第2个回答  2010-05-25
将 if(y=1) 改为 if(y==1)

这个可以。
可以 将 for(i=2;i<=n/2&&flag==1;i++)
改为for(i=2;i<=sqrt(n)&&flag==1;i++)可增加效率加math头文件
第3个回答  2010-05-25
#include <stdio.h>
int prime(int n)
{int flag=1,i;
for(i=2;i<=n/2&&flag==1;i++)
if(n%i==0)
flag=0;
return flag;
}
void main()
{int x,y;
printf("请输入一个数\n");
scanf("%d",&x);
y=prime(x);
if (y==1) printf("这个数是素数\n");
else printf("这个数不是素数\n");
}
是y==0不是y=0
第4个回答  2010-05-25
if (y=1) printf("这个数是素数\n");
应该是
if (y==1) printf("这个数是素数\n");
双等于本回答被提问者采纳