素数也就是质数,是指一个不小2的正整数只有1和它本身两个约数。我们用C语言来判断,提高我们算法的理解。总体来说,有两种思路,代码的实现可以多种
方法一
我们对输入的数做了不小于2的判断,后面的例程就直接省去这步。
#include <stdio.h> int main(void) { int i; int a=0; // 素数的个数 int num=0; // 输入的整数 BEGIN: scanf("%d",&num); if(num<2) { printf("请输入不小于2正整数!\n"); goto BEGIN; } else for( i=2; i<num; i++) { if(num%i==0) a++; // 素数个数加1}} } if(a==0) { printf("%d是素数。\n", num); } else { printf("%d不是素数。\n", num); } return 0; }
方法二
#include <stdio.h> int main(){ int x; scanf("%d",&x); int i; int isPrime = 1; for (i=2; i<x; i++){ if(x%i == 0){ isPrime=0; break; } } if(isPrime==1) { printf("%d是素数\n",n); } else { printf("%d不是素数\n",n); return 0; }
方法三
#include<stdio.h> int prime(int n)//声明 int main() { int n; printf("请输入一个数:\n"); scanf("%d", &n); prime(n); system("pause"); return 0; } int prime(int n) { int i; if (n < 2) { printf("%d不是素数", n); } else { for (i = 2; i < n; i++) {//判断n在2~n-1中有没有因数 if (n%i == 0)//如果用可以除尽的数,则非素数 break; } if (i < n) {//存在2~n-1之间有因数 printf("%d不是素数\n", n); } else printf("%d是素数\n", n); } return 0; }
方法四
#include <stdio.h> int main() { int a=0; // 素数的个数 int num=0; // 输入的整数 printf("输入一个整数:"); scanf("%d",&num); int i; for(i=2; i<num; i++) { if(num%i==0) { a++; // 素数个数加1 } } if(a==0) { printf("%d是素数。\n", num); } else { printf("%d不是素数。\n", num); } return 0; }
方法五
#include <stdio.h> #include <math.h> int main() { int m; // 输入的整数 int i; // 循环次数 int k; // m 的平方根 printf("输入一个整数:"); scanf("%d",&m); // 求平方根,注意sqrt()的参数为 double 类型,这里要强制转换m的类型 k=(int)sqrt( (double)m ); for(i=2; i<=k; i++) { if(m%i==0) break; } // 如果完成所有循环,那么m为素数 // 注意最后一次循环,会执行i++,此时 i=k+1,所以有i>k if(i>k) { printf("%d是素数。\n",m); } else { printf("%d不是素数。\n",m); } return 0; }
方法六
判断素数,若是就返回1,否则就返回0,先看能不能被2整出,若整除zhi肯定不是素数,如不整除就看它能不能被3,5,7,9......一直到sprt(x),整除。若整除就不是素数
#include <math.h> #include <stdio.h> int Prime(long x);//声明 int main() { int x; int y; x=10; y=Prime(x); if (y==1) { printf("是素数\n"); } else { printf("不是是素数\n"); } return 0; } int Prime(long x) { int i; if(x%2==0) return 0; else for(i=3; i<sqrt(x); i+=2) if(x%i==0) return 0; return 1; }
方法七
#include<stdio.h> int main() { int num,i,count=0; printf("请输入一个整数:"); scanf("%d",&num); if(num==0) { printf("%d不是一个质数!",num); } for(i=2; i<=num/2; i++) { if(num%i==0) { count++; break; } } if(num!=1 && count==0) { printf("%d是一个质数!\n",num); } else { printf("%d不是一个质数!\n",num); } return 0; }