写一个函数int prime(int x),判断数值x是否素数,如果是返回1,否则返回0。

作者&投稿:符钟 (若有异议请与网页底部的电邮联系)
求写一个函数int prime(int x),如果x是素数返回值为1,否则返回0。并用主函数验证它~

#include
#include
using namespace std;

int primes[168]=
{
2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,
107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,
223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,
337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,
457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,
593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,
719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,
857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,
997
};
//判断num是否为素数
bool isPrime(int num)
{
int temp = (int)sqrt((double)num);
for(int i = 0; i < 168 && primes[i] < temp; i++)
{
if(num % temp == 0)
return false;
}
return true;
}

//找出满足 d+1=d1+d2的所有数对,d为可逆素数
void Compose(int d)
{
int i;
int x = d+1;
for (int a=2; a<=x/2; a++)
{
int b=x-a;
for (i=2; i<=a-1; i++)
{
if (a%i==0)
break;
}
if (i==a)
{
for (i=2; i<=b-1; i++)
{
if (b%i==0)
{
break;
}
}
if (i==b)
{
printf("%d + %d
",a,b);
}
}
}
}
int main()
{
int n,num=0,revNum=0;
int a[50];
char s[50];
cout << "输入一个正整数:" << endl;
cin.getline(s,50);
n=strlen(s);
for (int i=0;i<n;i++)
{
a[i]=s[i];
a[i]-=48;
num=num*10+a[i];
}
for (int i=n-1;i>=0;i--)
{
a[i-n+1]=s[i];
a[i-n+1]-=48;
revNum=revNum*10+a[i-n+1];
}
if(isPrime(num) && isPrime(revNum))
{
cout << num << "是可逆素数" << endl;
cout << num + 1 << "可分解为:"<< endl;
Compose(num);
}
else
cout << num << "不是可逆素数" << endl;
getchar();
return 0;
}

#include#includeusing namespace std;int prime(int x){for (int i = 2; i<=sqrt(x);i++)if (x%i == 0)return 0;return 1;}int main(){int a[] = { 10, 23, 9, 16, 17, 3 };int cnt = 0;for (int i = 0; i < 6; i++)if (prime(a[i])){cout << a[i] << ' ';cnt++;}cout << endl << "总个数:" << cnt;return 0;}

源代码如下:

#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("请输入需要判断的数字:
"); 

scanf("%d",&x);

 m=prime(x);

 if(m==1)

{  printf("%d是素数
",x); }

else

{  printf("%d不是素数
",x); } }


扩展资料:

素数性质

质数的个数是无穷的。欧几里得的《几何原本》中有一个经典的证明。它使用了证明常用的方法:反证法。具体证明如下:假设质数只有有限的n个,从小到大依次排列为p1,p2,……,pn,设N=p1×p2×……×pn,那么,

是素数或者不是素数。


如果

为素数,则

要大于p1,p2,……,pn,所以它不在那些假设的素数集合中。


1、如果 为合数,因为任何一个合数都可以分解为几个素数的积;而N和N+1的最大公约数是1,所以不可能被p1,p2,……,pn整除,所以该合数分解得到的素因数肯定不在假设的素数集合中。因此无论该数是素数还是合数,都意味着在假设的有限个素数之外还存在着其他素数。所以原先的假设不成立。也就是说,素数有无穷多个。

2、其他数学家给出了一些不同的证明。欧拉利用黎曼函数证明了全部素数的倒数之和是发散的,恩斯特·库默的证明更为简洁,哈里·弗斯滕伯格则用拓扑学加以证明。

参考资料来源:百度百科-C语言

百度百科-质数



#include <stdio.h>

// 是否是素数 
int prime(int x)
{
    if(x < 2)
    {
        return 0;
    }
    for (int i=2;i*i<=x;i++)
    {
        if(x % i == 0)
        {
            return 0;
        }
    }
    return 1;
}

int main()
{
    if (0 == prime(12461))
    {
        printf("12461 不是 素数
");
    }
    else{

        printf("12461 是 素数
");
    }
    return 0;
}

运行结果如下:


欢迎采纳!



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;
}


package com.main3;
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);
}
}

#include<math.c>

int prime(int x)
{
int i;

for(i=2;i<=sqrt(x);i++)
{
if(x%i==0)
return 0;

}

return 1;

}


临海市13065662501: 编写一个函数prime(int n),判断一个整数是否是素数,若是素数,函数值返回1,否则返回0.利用该函数找出 -
谢味达诺: #include "stdio.h" int prime(int n) {int i;for(i=2;i<=n/2;i++)if(n%i==0)return 0;return 1; } int main() {int i;for(i=100;i<=200;i++)if(prime(i)==1)printf("%d\t",i);printf("\n");}

临海市13065662501: 求写一个函数int prime(int x),如果x是素数返回值为1,否则返回0.并用主函数验证它
谢味达诺: 源程序如下: #include <stdio.h> main() { int n; printf("Input a number please:"); scanf("%d",&n); if (prime(n)!=0) printf("%d is ss\n",n); else printf("%d is not ss\n",n); } int prime(int x) { int i; for(i=2;i<x;i++) if(x%i==0) return 0; return 1; } 程序测试结果如下图示:

临海市13065662501: 编写一个函数int prime( int a ),判断参数是否为素数.函数有一个形参a,当a为素数时,返回1,反之,返回 -
谢味达诺: 1:return 0;2:return 1;

临海市13065662501: c语言 编写一判别素数的函数,在主函数中输入一个整数,输出该数是否为素数的信息. -
谢味达诺: #include<stdio.h> void main() { int prime(int);int n;printf("\n input an integer:");scanf("%d",&n); if(prime(n))printf("\n %d is a prime.\n"); elseprintf("\n %d is not a prime.\n"); } 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);}

临海市13065662501: 急 急 急 定义函数int prime(int n)求一个正整数是否为素数,并在主函数中调用判断一个值是否为素数 ?? -
谢味达诺: #include<math.h> bool prime(int n) {if (n%2==0) return false; for (int i=3;i<=sqrt(n);i+=2) if (n%i==0) return false; return true;}

临海市13065662501: 、编写一个函数,函数名prime(),完成判断一个数是否是素数的功能,返回值为0或1,0代表不是素数,1代表是素数. -
谢味达诺: int prime(int par){for(int i=2;i<par;i++){if(par % i == 0){return 0;}}return 1; }

临海市13065662501: 一个判断素数的函数 -
谢味达诺: int prinme(int a) //这里有问题,应该是prime { int n; while (a<n) if (!(n%a++)||(a==n)) return 1; else return 0; } 另外你这个prime函数也有问题

临海市13065662501: 一道C语言程序题,写一个函数int prime(int x),如果x是素数返回1,否则返回0,并用主函数验证 -
谢味达诺: 无语...有谁把scanf()放到主函数外面的??另外你的素数判断函数没有0和1 的情况!!#include<stdio.h> int x,i,a; int prime(int x) { int i; if(x == 0 || x == 1) return 0; for(i=2;i<x;i++) if(x%i==0)return 0; if(i>=x)return 1; } int main() { scanf("%d",&x);//注意!! a=prime(x); printf("%d\n",a);return 0; }

临海市13065662501: 1. 编写一个函数int prime(int x)判断参数x是否为素数,若是,返回1,若不是返回0,在主函数中定义 -
谢味达诺: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23#include<iostream> #include<cmath> usingnamespacestd; intprime(intx) {daofor (inti = 2; i<=sqrt(x);i++)if(x%i == 0)回return0;return1; } intmain() {inta[] = { 10, 23, 9, 16, 17, 3 };...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网