↑ 收起筛选 ↑
判断n是不是素数C语言
2020-10-12

#include<iostream>#include<cmath>using namespace std;int main(){int a,b,i,flag=true;cin>>a;b=sqrt(a);for(i=2;i<=b;i++){if(a%i==0){flag=false;break;}}if(flag){cout<<a<<"是素数"<<endl;}else{cout<<a<<"不是素数"<<endl;}return 0;}扩展资料:

判断一个数是否素数的函数可以这样写: int chk(int x) { ok=1; for (i=2;i<x && ok==1;i++) if (x%i==0) ok=0; return ok; } 把80撤分为两个素数之和的程序代码可以这样写:main() { int i; for (i=2;i<=40;i++) if (chk(i) && chk(80-i)) printf("80=%d+%d\n",i,80-i); }

for(k=2;k<=n/2;k++) 这一行有问题 改为 int fun(int n) { int k = 0; int yes = 1; for(k=2;k<=n/2 && yes;k++) if(n%k==0) yes=0; return yes; }

int isprime(int n) { int i; for(i=2;i*i<=n;i++) if(n%i==0)return 0;//返回0表示n不是素数 return 1;//返回1表示n是素数 }

用while语句 int i,j,n; n=scanf("%d",&i); while( n != 0)//只要不输入0,就一直循环 { for(j=2;j<=n/2;j++) if(n%j==0) break; if(j>n/2) printf("%d是素数",n); else printf("%d不是素数",n); n=scanf("%d",&i); }

#include int fun(int n) { int i, k; if((n & 1) == 0) // 偶数 return 0; k = sqrt(n); for(i = 3; i if(n % i == 0) return 0; return 1; } main() { int i; for(i = 200; i if(fun(i)) printf("%d ", i); printf("\n"); }

#include<stdio.h>int main(){ int n,m,i,j,sum; scanf("%d",&n); for(j=2;j<n;j++){ if(n%j==0) break; } if(j==n) printf("%d是素数\n",n); else printf("%d不是素数\n",n); return 0;}

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

#include<stdio.h> int f(int x) { if (x==1)return 0;//1不是素数. else { for(int i=2;i<=x;i++) if(x%i==0)break;//被一个数整除后跳出. if(i==x)return 1;//素数只能被1和自己整除. else return 0; } } void main() { int m,n,sum=0; scanf("%d",&m);//输入m,对m以内的数进行判断. for(n=1;n<=m;n++)//判断1到m的数. if(f(n)==1)sum+=n;//判断是否为素数,是就叠加. printf("%d\n",sum); }

/* 素数表 */ /* By:z@k 2008.12.28 */ #include<stdio.h> int main() { int m,n,flag=1; for(n=1;n<=10000;n+=2) { flag=1; for(m=2;m<=n/2;m++) { if(n%m==0) { flag=0; break; } } if(flag==0) continue; printf("%d,",n); } printf("\n"); return 0; }

延伸阅读: