写一个函数int prime(int x),判断数值x是否素数,如果是返回1,否则返回0。
提示:素数又称质数,是指一个大于1的自然数,如果除了1和它自身外,不能被其他自然数整除(除0以外)的数称之为素数(质数),如3=1*3,5=1*5,而9=1*9和9=3*3,9就不是素数。 展开
源代码如下:
#include <stdio.h>
#include <math.h>
int prime(int x)
{ int i;
for(i=2;i<x;i++)
if(x%i==0)
return 0;
else return 1; }
main()
{
int x,m;
printf("请输入需要判断的数字:\n");
scanf("%d",&x);
m=prime(x);
if(m==1)
{ printf("%d是素数\n",x); }
else
{ printf("%d不是素数\n",x); } }
扩展资料:
素数性质
质数的个数是无穷的。欧几里得的《几何原本》中有一个经典的证明。它使用了证明常用的方法:反证法。具体证明如下:假设质数只有有限的n个,从小到大依次排列为p1,p2,……,pn,设N=p1×p2×……×pn,那么,
是素数或者不是素数。
如果
为素数,则
要大于p1,p2,……,pn,所以它不在那些假设的素数集合中。
1、如果 为合数,因为任何一个合数都可以分解为几个素数的积;而N和N+1的最大公约数是1,所以不可能被p1,p2,……,pn整除,所以该合数分解得到的素因数肯定不在假设的素数集合中。因此无论该数是素数还是合数,都意味着在假设的有限个素数之外还存在着其他素数。所以原先的假设不成立。也就是说,素数有无穷多个。
2、其他数学家给出了一些不同的证明。欧拉利用黎曼函数证明了全部素数的倒数之和是发散的,恩斯特·库默的证明更为简洁,哈里·弗斯滕伯格则用拓扑学加以证明。
参考资料来源:百度百科-C语言
int prime(int x)
{
int half = x/2;
int i = 3;
if ((x % 2) == 0 && (x != 2))
{
return 0;
}
if (x == 2)
{
return 1;
}
for (;i <= half;i+= 2)
{
if ((x % i) == 0)
{
return 0;
}
}
return 1;
}
import java.util.Scanner;
public class M_ss {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
for (int i = 0; i <2; i++) {
System.out.println("请输入要判断的数:");
int x=input.nextInt();
sushu(x);}
}
static void sushu(int x) {
boolean flag=true;
int x1=x/2;
for (int i=2; i <=x1; i++) {
if(x%i==0)
flag=false;}
if(flag)
System.out.printf("%d是素数。\n",x);
else
System.out.printf("%d不是素数。\n", x);
}
}
int prime(int x)
{
int i;
for(i=2;i<=sqrt(x);i++)
{
if(x%i==0)
return 0;
}
return 1;
}