↑ 收起筛选 ↑
判断一个数是否为质数C语言
2020-07-31

#include int main(int argc,int argv[]){ int a,flag; scanf("%d",&a);/*输入一个数进行判断是否是质数*/ int isprime(int);/*这里是对将要调用的函数声明一下*/ flag=isprime(int); if(flag==1) printf("%d is isprime",a); printf("%d is not isprime",a):

额,楼主,那个你x没输入,怎么把sqrt(x)赋值给k啊.以下是标程:#include<stdio.h> int main() { int n; int i,flag; printf("请输入一个正整数x:"); scanf("%d",&n); if(n<2)printf("该数不是质数.\n"); else { flag=1; for(i=2;i*i<=n;i++) if(n%i==0)

判断一个数是否是质数在于看这个数字是否只能被1和它本身所整除的整数.但是有一个例外,1不属于质数.c语言中的质数:数学的概念中,素数就是只能被1和它本身所整除的整数.但是有一个例外,就是1不属于素数.所以你在输入一个整

prm函数中将a在声明的时候初始化为0即可另外,由于1不是质数,所以建议num从2开始

main() { int x; int i,f; f=0; scanf("%d",&x); for(i=2;i<x;i++) if(x%i==0) { f=1; break;} else {f=0; continue;} if(f) printf("no\n"); else printf("yes\n"); }

从2开始很好理解 到根号n是因为如果以个数不是素数 那么它可以分解成一个 小于根号n的数 乘以 大于根号n的数 也就是说如果不存在小于根号n的数被除尽,那么肯定就不存在相应的那个大于根号n的数 所以在2到根号n之间没有数字可以除尽的话,根号n到n之间肯定也不存在能除尽的数 所以只用判断2到根号n之间的数即可

else if(a=i) 应该改成for(a=2;a<=gh2+1;a++) { if(i%a==0) {printf("%d不是质数\n",i); goto loop;} else if(a>=gh2) {printf("%d是质数\n",i); goto loop;} }因为当i>2时sqrt(i)肯定比i小,你原来的else if(a==i)肯定判断不符合

/*记得包含*/ { int i,j=23; /*这里以23为例*/ for(i=2;i { if(j%i==0) /*求模为0代表除尽*/ break; } if(i>sqrt(j))/*足次循环,代表是质数*/ printf("yes"); else printf("no"); }

延伸阅读: