C语言求素数的几种方式总结

目录
  • 一、判断n是否能被2~n-1整除
    • 方法一
    • 方法二
  • 二、判断n是否能被2~√n间的整数整除
    • 方法一
    • 方法二
  • 总结

一、判断n是否能被2~n-1整除

输入的数n不能被2-(n-1)整除,说明是素数

输入的数n能被2-(n-1)整除,说明不是素数

注意:1不是素数,素数是指大于1的自然数,除了1和该数自身外,无法被其他自然数整除的数。

方法一

#include<stdio.h>
int main()
{
    int i, n;
    printf("请输入一个数:");
    scanf("%d", &n);
    for (i = 2; i < n ; i++)
    {
        if (n%i == 0)
            break;
    }
    if (n <=1 ) printf("这不是素数\n");
    else  if (i < n) printf("这不是素数\n");
    else printf("这是素数\n");
    return 0;

}

方法二

#include<stdio.h>
int main()
{
    int i, n;
    printf("请输入一个数:");
    scanf("%d", &n);
    if(n<=1)
        printf("这不是素数\n");
    else
        {
        for (i = 2; i < n ; i++)
	    {
             if (n%i == 0)
             break;
	     }
         if(i>=n)
	        printf("这是素数\n");
         else
	        printf("这不是素数\n");
	  }
	 return 0;
}

二、判断n是否能被2~√n间的整数整除

输入的数n不能被2-√n整除,说明是素数

输入的数n能被2-√n整除,说明不是素数

方法一

#include<stdio.h>
#include<math.h>
int main()
{
    int n,i;
    double k;
    printf("请输入一个数:");
    scanf("%d", &n);
    k = sqrt(n);
    for (i = 2; i <= k;i++)
    {
        if (n%i == 0) break;
    }
    if (n <=1 ) printf("这不是素数\n");
    else if (i <= k) printf("这不是素数\n");
    else printf("这是素数\n");
    return 0;

}

方法二

#include<stdio.h>
#include<math.h>
int main()
{
    int n,i,k;
    printf("请输入一个数:");
    scanf("%d", &n);
    if(n<=1)
        printf("这不是素数\n");
    else
    {
        k=sqrt(n);
        for (i=2;i<=k;i++)
        {
            if (n%i==0)
            break;
        }
        if(i>=k+1)
            printf("这是素数\n");
        else
            printf("这不是素数\n");
    }
    return 0;
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • C语言用递归函数对素数进行判断流程

    目录 前言 思路简述 代码实现 前言 本文介绍递归函数实现素数判断. 事实上,递归算法判断素数的本质是试除法,且递归算法在本题中并不具有优势.它不仅没有优化原算法,还增加了空间复杂度与时间复杂度. 时间复杂度和空间复杂度都是0(N),实现效率可想而知. 那为什么还要写呢?仅作为开拓思路.加深对递归函数的理解而为之.其实很多基础的算法,包括斐波那契数列.闰年等,都可以用递归实现.递归思路能将复杂的问题呈现以简单的思路,这是它的优势.通过简单问题的递归实现,大家可以提前熟悉递归的构造和运用,为后续学

  • C语言输出孪生素数的实现示例

    目录 1.题目内容: 2.输入格式: 3输出格式: 1.题目内容: 孪生素数是指间隔为 2 的相邻素数,例如最小的孪生素数对是3和5,5和7也是(5虽重复但算作2组). 2.输入格式: 输入N,找出2至N之间的孪生素数的组数. 这里要注意输入的N不要超过int表示的最大范围了 3输出格式: 输出2至N之间的孪生素数,然后输出组数. 代码如下: #include<stdio.h> int Function(int n)//函数判断是否为素数 {     for (int i=2; i<n;

  • C语言如何使用函数求素数和举例

    本题要求实现一个判断素数的简单函数.以及利用该函数计算给定区间内素数和的函数.素数就是只能被1和自身整除的正整数. 注意:1不是素数,2是素数. 函数接口定义: int prime( int p ); int PrimeSum( int m, int n ); 其中函数prime当用户传入参数p为素数时返回1,否则返回0:函数PrimeSum返回区间[m, n]内所有素数的和.题目保证用户传入的参数m≤n. 裁判测试程序样例: #include <stdio.h> #include <m

  • C语言中判断素数(求素数)的思路与方法实例

    目录 前言 思路1实现: 思路2实现: <C与指针>4.14-2: 补充:判断素数的4种方法实例 总结 前言 素数又称质数.所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被 2~16 的任一整数整除. 思路1):因此判断一个整数m是否是素数,只需把 m 被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么 m 就是一个素数. 思路2):判断方法还可以简化.m 不必被 2 ~ m-1 之间的每一个整数去除,只需被 2 ~  之间的每一个整数去

  • C语言算法练习之数组求素数

    目录 一.问题描述 二.算法实例编译环境 三.算法实例实现过程 3.1.包含头文件 3.2.声明数组 3.3.声明相关变量 3.4.数组赋值 3.5. 输出数组里面元素的值 3.6.求素数.素数和.最大的素数 3.7.输出所求的素数.素数和.最大的素数 四.经典算法实例程序 4.1.main.h文件 4.2.main.c文件 五.总结 一.问题描述 数组求素数 问题的描述 如下几点所示 输出1750 到 1850 之间的素数. 计算并输出1750 到 1850 之间的素数之和 S. 并且输出最大

  • 浅谈python和C语言混编的几种方式(推荐)

    Python这些年风头一直很盛,占据了很多领域的位置,Web.大数据.人工智能.运维均有它的身影,甚至图形界面做的也很顺,乃至full-stack这个词语刚出来的时候,似乎就是为了描述它. Python虽有GIL的问题导致多线程无法充分利用多核,但后来的multiprocess可以从多进程的角度来利用多核,甚至affinity可以绑定具体的CPU核,这个问题也算得到解决.虽基本为全栈语言,但有的时候为了效率,可能还是会去考虑和C语言混编.混编是计算机里一个不可回避的话题,涉及的东西很多,技术.架

  • 使用c语言判断100以内素数的示例(c语言求素数)

    从console输入一个数,判断这个数是否为素数(质数). 复制代码 代码如下: #include <stdio.h> /**判断100以内的素数*/ //定义函数判断是否是素数int isPrime(int num ){    int i;    //从2开始循环,一直到i的平方小于等于给定的数.    for (i = 2; i*i <= num; i++) {        if ( ( num % i ) == 0 ) {            return 0;       

  • java输出1~100之间的全部素数的5种方式总结

    目录 需求:输出1~100的所有素数 分析 java输出素数 找出素数 规范输出 需求:输出1~100的所有素数 分析 1.素数: 判断条件1:只能被1和本身整除的称为素数: 判断条件2:在区间(1,x/2)中找不到能整除素数x的整数: 判断条件3:在区间(1,sqrt(x))中找不到能整除素数x的整数: 2.方法:很多,但不外是循环嵌套外加条件语句: class PrintSuShu { public static void main(String[] args) { //方法一:根据素数的定

  • C语言中计算二叉树的宽度的两种方式

    C语言中计算二叉树的宽度的两种方式 二叉树作为一种很特殊的数据结构,功能上有很大的作用!今天就来看看怎么计算一个二叉树的最大的宽度吧. 采用递归方式 下面是代码内容: int GetMaxWidth(BinaryTree pointer){ int width[10];//加入这棵树的最大高度不超过10 int maxWidth=0; int floor=1; if(pointer){ if(floor==1){//如果访问的是根节点的话,第一层节点++; width[floor]++; flo

  • R语言数据框合并(merge)的几种方式小结

    merge data frames (inner, outer, left, right) 数据 > df1 = data.frame(CustomerId = c(1:6), Product = c(rep("Toaster", 3), rep("Radio", 3))) > df1 > CustomerId Product 1 1 Toaster 2 2 Toaster 3 3 Toaster 4 4 Radio 5 5 Radio 6 6 R

  • C语言中字符串的两种定义方式详解

    目录 方式1 方式2 总结 我们知道C语言中是没有字符串这种数据类型的,我们只能依靠数组进行存储,即字符数组,而我们定义并且初始化数组有两种方式.下面将给大家介绍这两种方式并且介绍这两种方式的区别: 方式1 前两种是正确的定义方式,第一种之所以没有指定字符数组长度的原因是编译器能够自己推断出其长度,无需程序员自己设定,这也是我们比较推荐的一种定义方式,但注意内存长度编译器一经判定就无法再次更改,接下来我们分析一下第三种编译器为什么会出现乱码. 相信大家都知道,字符串是以'\0'字符为结束标志的,

  • Go语言net包RPC远程调用三种方式http与json-rpc及tcp

    目录 一.服务端 二.http客户端 三.TCP客户端 四.json客户端 五.运行结果 rpc有多种调用方式,http.json-rpc.tcp 一.服务端 在代码中,启动了三个服务 package main import ( "log" "net" "net/http" "net/rpc" "net/rpc/jsonrpc" "sync" ) //go对RPC的支持,支持三个级别:T

  • Go语言列表List获取元素的4种方式

    目录 1.获取列表头结点 2.获取列表尾结点 3.获取上一个结点 4.获取下一个结点 Golang的列表元素的获取可以使用内置的 Front 函数获取头结点,使用 Back 函数获取尾结点,使用 Prev 获取前一个结点,使用 Next 获取下一个结点. 1.获取列表头结点 Front() *Element package main import ( "container/list" "fmt" ) func main() { fmt.Println("嗨

  • C语言求阶乘之和的三种实现方法(先阶乘再累加)

    目录 题目: 方法一:使用一层for循环实现 代码简单快捷容易理解 方法二:使用两层for循环嵌套 方法三:函数递归实现 总结 题目: 此处题目是以1-20的阶乘之和举例 方法一:使用一层for循环实现 代码简单快捷容易理解 代码示例如下: #include<stdio.h> int main() { double a = 1, sum = 0;//因为最后值可能会超出int所能接收的范围 故用double int n, i; scanf("%d", &n);//注

随机推荐

其他