精华内容
下载资源
问答
  • 用C语言编写自定义函数prime(int x),判断x是否为素数?int prime(int x){int i,kk=(int)sqrt( (double)x )for(i=2i&lt=ki )if(x%i==0)break// 如果完成所有循环,那么x为素数if(i&gtk)retrun 1elsereturn ...

    用C语言编写自定义函数prime(int x),判断x是否为素数?

    int prime(int x)

    {

    int i,k

    k=(int)sqrt( (double)x )

    for(i=2i&lt=ki )

    if(x%i==0)

    break

    // 如果完成所有循环,那么x为素数

    if(i&gtk)

    retrun 1

    else

    return 0

    }

    C语言,编写函数判断一个整数是否为素数,在主函数中调用该函数并输出100以内的全部素数?

    参考代码:

    #include &ltstdio.h&gt

    int is_prime_number(int n)

    {

    int i

    int result = 1

    if(n==1)

    return 0

    for(i=2i&ltni )

    {

    if(n%i==0)

    {

    result = 0

    break

    }

    }

    return result

    }

    int main()

    {

    int n

    printf("100以内的素数包括:")

    for(n=1n&lt=100n )

    {

    if(is_prime_number(n))

    {

    printf("%d ",n)

    }

    }

    printf("")

    return 0

    }

    编写程序,其中自定义函数,用来判断一个整数是否为素数,主函数输入一个数,输出是否为素数?

    自己动手写吧,这是最基本的能力啦.....(课本一般会有的)

    C 编程,编写函数判断变量是否为素数?

    多的我就不说了,函数如下(你只需把下面的代码贴在intmain()之前就行了,然后在开头加一个头文件:#include

    boolisPrime(intx){

    if(x==1)return0

    for(inti=2i

    if(x%i==0)return0

    return1}

    函数就是上面的,使用方法:比如你想判断n(这里n为正整数)是否为素数,只需运行isPrime(n),如果n是素数,则刚才的函数返回1,否则返回0.

    不懂在发站内信问我

    编程用自定义函数求100到200之间的素数?

    #include "stdio.h" int isPrime(int n)//判断n是否是素数,是返回1,不是返回0 { int i for(i=2i&lt=n/2i ) if(n%i==0) return 0 return 1 } int main() { int i printf("100到200之间的素数: ") for(i=100i&lt=200i ) if(isPrime(i)==1) printf("%d",i) printf(" ") }

    python编写一个函数.判断一个数是不是素数,然后调用该函数输出100以内的素数?

    def is_prime(n): list_num = [] for i in range(2, n): for num in range(2, int(sqrt(n)) 1): if i % num == 0 and i != num: break elif i % num != 0 and num == (int(sqrt(n))): list_num.append(i) return list_num

    展开全文
  • n),求m到n之间(包括m和n)所有素数的和,要求定义并调用函数isprime(x)来判断x是否为素数(素数是除1以外只能被自身整除的自然数)。 哈哈,致敬正在学习C语言的你!这个其实就是如何判断素数的问题,其实有很多方法...

    输入两个正整数m和n(m<n),求m到n之间(包括m和n)所有素数的和,要求定义并调用函数isprime(x)来判断x是否为素数(素数是除1以外只能被自身整除的自然数)。

    哈哈,致敬正在学习C语言的你!这个其实就是如何判断素数的问题,其实有很多方法,但是每次写都不太一样!

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

     

    展开全文
  • 1)直观判断法最直观的方法,根据定义,因为质数除了1和本身之外没有其他约数,所以判断n是否为质数,根据定义直接判断从2到n-1是否存在n的约数即可。C++代码如下:bool isPrime_1( int num ) { int t...
    定义:约数只有1和本身的整数称为质数,或称素数。
    计算机或者相关专业,基本上大一新生开始学编程都会接触的一个问题就是判断质数,下面分享几个判断方法,从普通到高效。

    1)直观判断法

    最直观的方法,根据定义,因为质数除了1和本身之外没有其他约数,所以判断n是否为质数,根据定义直接判断从2到n-1是否存在n的约数即可。C++代码如下:

    bool isPrime_1( int num )
    {
        int tmp =num- 1;
        for(int i= 2;i <=tmp; i++)
          if(num %i== 0)
             return 0 ;
        return 1 ;
    }
    

    2)直观判断法改进

    上述判断方法,明显存在效率极低的问题。对于每个数n,其实并不需要从2判断到n-1,我们知道,一个数若可以进行因数分解,那么分解时得到的两个数一定是一个小于等于sqrt(n),一个大于等于sqrt(n),据此,上述代码中并不需要遍历到n-1,遍历到sqrt(n)即可,因为若sqrt(n)左侧找不到约数,那么右侧也一定找不到约数。C++代码如下:
    bool isPrime_2( int num )
    {
         int tmp =sqrt( num);
         for(int i= 2;i <=tmp; i++)
            if(num %i== 0)
              return 0 ;
         return 1 ;
    }

    3)另一种方法

    方法(2)应该是最常见的判断算法了,时间复杂度O(sqrt(n)),速度上比方法(1)的O(n)快得多。最近在网上偶然看到另一种更高效的方法,暂且称为方法(3)吧,由于找不到原始的出处,这里就不贴出链接了,如果有原创者看到,烦请联系我,必定补上版权引用。下面讲一下这种更快速的判断方法;
    首先看一个关于质数分布的规律:大于等于5的质数一定和6的倍数相邻。例如5和7,11和13,17和19等等;

    证明:令x≥1,将大于等于5的自然数表示如下:
    ······ 6x-1,6x,6x+1,6x+2,6x+3,6x+4,6x+5,6(x+1),6(x+1)+1 ······
    可以看到,不在6的倍数两侧,即6x两侧的数为6x+2,6x+3,6x+4,由于2(3x+1),3(2x+1),2(3x+2),所以它们一定不是素数,再除去6x本身,显然,素数要出现只可能出现在6x的相邻两侧。这里有个题外话,关于孪生素数,有兴趣的道友可以再另行了解一下,由于与我们主题无关,暂且跳过。这里要注意的一点是,在6的倍数相邻两侧并不是一定就是质数。
    此时判断质数可以6个为单元快进,即将方法(2)循环中i++步长加大为6,加快判断速度,原因是,假如要判定的数为n,则n必定是6x-1或6x+1的形式,对于循环中6i-1,6i,6i+1,6i+2,6i+3,6i+4,其中如果n能被6i,6i+2,6i+4整除,则n至少得是一个偶数,但是6x-1或6x+1的形式明显是一个奇数,故不成立;另外,如果n能被6i+3整除,则n至少能被3整除,但是6x能被3整除,故6x-1或6x+1(即n)不可能被3整除,故不成立。综上,循环中只需要考虑6i-1和6i+1的情况,即循环的步长可以定为6,每次判断循环变量k和k+2的情况即可,理论上讲整体速度应该会是方法(2)的3倍。代码如下:
    bool isPrime_3( int num )
    {
                     //两个较小数另外处理
                     if(num ==2|| num==3 )
                                     return 1 ;
                     //不在6的倍数两侧的一定不是质数
                     if(num %6!= 1&&num %6!= 5)
                                     return 0 ;
                     int tmp =sqrt( num);
                     //在6的倍数两侧的也可能不是质数
                     for(int i= 5;i <=tmp; i+=6 )
                                     if(num %i== 0||num %(i+ 2)==0 )
                                                     return 0 ;
                     //排除所有,剩余的是质数
                     return 1 ;
    }
    
    算法性能测试:
    编写测试代码,使用较多数据测试比较几种方法的判断效率,数据量40w,代码如下:
    #include <iostream>
    #include <string>
    #include <ctime>
    #include <vector>
    using namespace std;
    bool isPrime_1( int num );
    bool isPrime_2( int num );
    bool isPrime_3( int num );
    int main()
    {
                     int test_num =400000;
                     int tstart ,tstop; //分别记录起始和结束时间
                     //测试第一个判断质数函数
                     tstart=clock ();
                     for(int i= 1;i <=test_num; i++)
                                     isPrime_1(i );
                     tstop=clock ();
                     cout<<"方法(1)时间(ms):" <<tstop- tstart<<endl ;//ms为单位
                     //测试第二个判断质数函数
                     tstart=clock ();
                     for(int i= 1;i <=test_num; i++)
                                     isPrime_2(i );
                     tstop=clock ();
                     cout<<"方法(2)时间(ms):" <<tstop- tstart<<endl ;
                     //测试第三个判断质数函数
                     tstart=clock ();
                     for(int i= 1;i <=test_num; i++)
                                     isPrime_3(i );
                     tstop=clock ();
                     cout<<"方法(3)时间(ms):" <<tstop- tstart<<endl ;
                     cout<<endl ;
                     system("pause" );
                     return 0 ;
    }
    

    运行结果如下;


    可以看出,判断到40w,效率上方法(1)明显要差得多,方法(2)和方法(3)在这种测试数量下时间相差2倍多

    单独对比方法(2)和(3),数据量加到1000w,结果如下:

    可以看出,方法(2)和方法(3)在这种测试数量下时间相差依然是2倍多,不过已经是很不错的提升。
    对了,附上运行环境,CPU-i5-3210,内存4G,win7,vs2012。

    好了,判断质数的方法暂时就到这里,不足之处欢迎各道友指出。





    展开全文
  • 判断一个数x是否为素数 思路: 若一个数是素数,则它的因数只有“1”和它本身。 采用循环,依次从2开始到这个数x-1取模,若期间有(x%i==0),则这个数必然不是素数。 代码: import java.util.*; public class Pra {...

    判断一个数x是否为素数

    思路:
    若一个数是素数,则它的因数只有“1”和它本身。
    采用循环,依次从2开始到这个数x-1取模,若期间有(x%i==0),则这个数必然不是素数。
    代码
    代码:

    import java.util.*;
    public class Pra {
    	static Scanner scan = new Scanner(System.in);
    	public static void main(String[] args) {
    		SuShu s = new SuShu();
    		System.out.println("判断一个数是否为素数**");
    		System.out.println("请输入一个数:");
    		int x = scan.nextInt();
    		s.Function(x);
    	}
    }
    class SuShu{
    	boolean flag =true;
    	void Function(int x) {
    		for(int i = 2;i < x; i++) {
    			if(x%i==0) {
    				flag = false;
    				break;
    			}
    		}
    		if(flag==true)
    			System.out.println(x+"是素数");
    		else
    			System.out.println(x+"不是素数");
    	}
    }
    

    *~~此文纯属记录作者学习日记,若有误导,纯属意外~ *

    展开全文
  • 用Python判断是否为素数

    万次阅读 多人点赞 2019-02-13 14:05:59
    可以用排除法: 当判断x是否为素数时,只要让x分别除以 2,3,4,5,6,…,x-1, 只要有一次整除了,则x不是素数 否则x是素数 s=int(input("请输入一个正整数:")) if s&lt;2: print("这个数不是素数!&...
  • 判断一个数是否为质数素数)的4种方法

    万次阅读 多人点赞 2019-07-20 15:38:30
    2.如何判断是否为质数? 方法1 方法2 方法3 方法4 1.什么是质数? 首先来看质数的概念: 质数(Prime number),又称素数,指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数。(也可定义...
  • 我们可以利用循环内嵌来判断质数,根据性质可知质数是大于1的且只能被1和本身整除。举个例子:求100以内全部素数并且把它们赋入result数数组里。 那么有代码: /* *时间: 2020年9月13日 15:09:48 *例: 求100...
  • ruby判断一个数是否为质数质数又称素数。一个大于1的自然数,如果除了1和它自身外,不能被其他自然数整除的数;(除0以外)否则称为合数 。根据算术基本定理,每一个比1大的整数,要么本身是一个质数,要么可以写成...
  • JavaScript判断一个数是否为质数/素数 所谓素数,又称为素数,即自然数中只能被1和它本身整除的数。反之,除了1和它本身外还能被其他数整数的数称之合数。特别说明的是0和1既不是质数也不是合数。 这里将介绍...
  • 给一个数,判断是否为素数质数) + 求100000以内的素数
  • Python判断整数是否为质数

    千次阅读 2020-06-02 18:36:08
    问题1:如何判断一个整数是否为质数? 分析:使用for循环,可以很方便实现。 x = int(input("请输入一个不小于2的整数:")) isPrimeNumber = True for i in range(2, x): if x % i == 0: isPrimeNumber = False # ...
  • 在键盘输入一个数,判断是否为质数(素数),如果是,则输出为质数(素数),如果不是,则输出合数. 二.代码 #include<stdio.h> #include<stdlib.h> int IsPrime(int x) { int num = 2; //输入num,从2开始 ...
  • c { long int x; long int y; y=m[c]; x=a%y; if(x==0) { piaoshi=1; break; } } if(piaoshi==0) { m.push_back(a); cout; } else piaoshi=0; a=p*10+3; b=sqrt(a); if(m[n]) n++; for(int cc=0;cc { long int x; ...
  • 判断是否为素数的c++程序

    千次阅读 2019-10-05 15:08:33
    #include<iostream> using namespace std; int main() { ...//定义布尔型变量yes_no,用来表示x是否为素数 //先假定x素数,因此将yes_no的初始值设true for(int n=2;n<x;n++...
  • 判断从键盘读入的正整数x是否为质数,并输出判断结果。 #include<stdio.h> #include<math.h> int main() { int x, k, i; printf("请输入一个正整数x:"); scanf_s("%d", &x); if (x <= 0) ...
  • 判断一个数是否为质数/素数——从普通判断算法到高效判断算法思路 2016年05月06日 15:00:14 huang_miao_xin 阅读数:90527 判断一个数是否为质数/素数——从普通判断算法到高效判断算法思路 定义:约数只有1和...
  • 一、概念介绍素数又称为质数。一个大于1的自然数(从2开始),除了1和它本身外,不能被其他自然数整除的叫做素数,否则称为合数。0和1既不是素数也不是合数,最小的素数是2。二、代码方法一:bool is_Prime(int num){...
  • 判断是否为素数

    2020-09-28 20:28:19
    #include "stdio.h" int ss(int a) { int i;...printf("请输入要判断是否素数的数:\n") scanf("%d",&x); if(ss(x)==1)printf("%d是素数哦\n",x); else printf("输入的%d不是素数哦\n",x); } ...
  • 素数/质数的概念:一个的自然数,除了1和它自身外,不能被其他自然数整除的数叫素数,否则成为合数。 0和1既不是素数也不是合数,最小的素数是2。 方法1:从2到n - 1判断有没有能整除n的数。如果有,则不是素数,...
  • (3)sqrt(x),只需判断x开方小的部分,看是否存在因数,就知道X是不是素数 (4)判断是否能被已知的且<x素数整除 拿已知素数去整除新数字,如果不存在可以整除新数字的素数,那么新数字也是素...
  • 质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数 基本判断思路 1、在一般领域,对正整数n,如果用2到之间(包含2和)的所有整数去除,均无法整除,则n为质数。 2、质数大于...
  • 任意输入整数,判断是否为素数(质数)只能被1和自身整除。 建议:用排除法 a = int(input(“输入一个数”)) for b in range(2,a-1): if a%b==0: print(“这个数不是素数”) break elif a%b!=0: b+=1 print(“这个数是...
  • 判断是否为质数

    2019-10-07 20:16:09
    定义在大于1的自然数中,除了1和它本身以外不再有其他因数。 常见的质数有 一种: num = int(input("请输入一个数字:")) if num >1: for x in range(2,num ): if num % x == 0: print("不是质数")...
  • 从键盘输入一个整数,判断是否为素数 代码如下 #include<iostream> #include<cstdio> #include<cmath> using namespace std; int main() { int x,m; cout<<"输入数字: "; scanf("%d",&...
  • 题:给定一个数,判断是否为素数分析:首先,什么事素数呢?只能被 1 和它本身整除的数叫做素数,当然,1 既不是素数也不是合数。 知道了什么是素数,就要开始考虑怎么实现。首先,比如给一个数是 32,你怎么判断...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 41,632
精华内容 16,652
关键字:

判断x是否为素数