给定一个区间以内,求其中素数的个数,采用C语言方式的实现

Problem Description
Easy question! Calculate how many primes between [1...n]!

Input
Each line contain one integer n(1 <= n <= 1e11).Process to end of file.

Output
For each case, output the number of primes in interval [1...n]

Sample Input
2
3
10

Sample Output
1
2
4

1个回答

#include <stdio.h>
#include<math.h>


bool isPrime(long num)
{
    long i = 2;
    if(num <= 1)
    {
        return false;
    }

    long sqrNum = sqrt(num);

    for(i = 2; i <= sqrNum; i++)
    {
        if(num % i == 0)
        {
            return false;
        }
    }
    return true;
}

int getPrimeCount(long a)
{
    int sum = 0;
    long start;

    if(a <= 1)
    {
        return 0;
    }

    for(start = 2; start <= a; start++)
    {
        if(isPrime(start))
        {
            sum++;
        }
    }
    return sum;
}

int main()
{
    long a;
    scanf("%ld", &a);
    printf("%d\n", getPrimeCount(a));
    return 0;
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c语言求素数个数,优化方法

以下是题目和我写的代码,但是超时了,谁有更优化的方法吗,求解 /*给定两个非负整数a,b,其中0<= a,b<=1,000,000,请计算这两个数之间有多少个素数。 输入 第一行是一个整数K(1<=K<=1000),表示有多少个样例,每个样例占一行,是两个整数a和b,每个整数之间用一个空格隔开。 输出 每行输出一个样例的结果。 Sample Input 2 2 3 17 19 Sample Output 2 2*/ #include <stdio.h> #include <math.h> int main() { int n,i,j,a,b,sq; scanf("%d",&n); while(n--) { int sum=0; scanf("%d %d",&a,&b); if(a>b) { int temp=a; a=b; b=temp; } for(i=a;i<=b;i++) { sq=sqrt(i); for(j=2;j<=sq;j++) if(i%j==0) break; if(j>sq) sum++; } if(a==1||a==0) sum--; printf("%d\n",sum); } return 0; }

两个数,求两个数之间素数的个数,数据非常大。

题目描述 给你两个数,求两个数之间素数的个数。 输入: 输入有两个数,一个a,一个b,求a到b之间素数的个数 其中1<=a<=b<=1e12 其中b-a<=1e7 输出: 一个数,表示a-b之间素数的个数。 样例输入: 1 10 样例输出: 4

C语言求出每个数在多少个包含其的区间中是中位数。

Problem Description 中位数定义为所有值从小到大排序后排在正中间的那个数,如果值有偶数个,通常取最中间的两个数值的平均数作为中位数。 现在有n个数,每个数都是独一无二的,求出每个数在多少个包含其的区间中是中位数。 Input 多组测试数据 第一行一个数n(n≤8000) 第二行n个数,0≤每个数≤109, Output N个数,依次表示第i个数在多少包含其的区间中是中位数。 Sample Input 5 1 2 3 4 5 Sample Output 1 2 3 2 1

PTA 统计素数并求和 (20 分)

7-1 统计素数并求和 (20 分) 本题要求统计给定整数M和N区间内素数的个数并对它们求和。 输入格式: 输入在一行中给出两个正整数M和N(1≤M≤N≤500)。 输出格式: 在一行中顺序输出M和N区间内素数的个数以及它们的和,数字间以空格分隔。 输入样例: 10 31 输出样例: 7 143 ``` #include"stdio.h" int prime(int x); int prime(int x) { if(x<2||x%2==0||x%3==0||x%5==0||x%7==0) return 0; else return 1; } int main() { int m,n,count=0,sum=0,i; scanf("%d%d",&m,&n); for(i=m;i<=n;i++) { if(prime(i)) { sum=sum+i; count++; } } printf("%d %d",count,sum); return 0; } ``` 我提交显示答案错误 各位大哥看看 哪里错了

素数的队列的计算问题的算法,采用C语言的编程计算实现它

roblem Description Fermat's theorem states that for any prime number p and for any integer a > 1, a^p == a (mod p). That is, if we raise a to the pth power and divide by p, the remainder is a. Some (but not very many) non-prime values of p, known as base-a pseudoprimes, have this property for some a. (And some, known as Carmichael Numbers, are base-a pseudoprimes for all a.) Given 2 < p ≤ 1,000,000,000 and 1 < a < p, determine whether or not p is a base-a pseudoprime. Input Input contains several test cases followed by a line containing "0 0". Each test case consists of a line containing p and a. Output For each test case, output "yes" if p is a base-a pseudoprime; otherwise output "no". Sample Input 3 2 10 3 341 2 341 3 1105 2 1105 3 0 0 Sample Output no no yes no yes yes

编写函数,判断该数组中哪些是素数,并统计素数的个数,在主函数中输出素数的个数和这些素数,函数原型不能变,怎么我一直输出不来,求大神指教!?

#include<stdio.h> int len ; int IsPrime(int *data, int *primes,int len) { int y=1; for (int j = 0; j < 5; j++)/*判断素数*/ { for (int i = 2; i < data[j]; i++) { y *= data[j] % i; } if (y != 0) { primes = &data[j]; len++; primes++; } } /*for (int i = 0; i < len; i++) printf("%3d\n", *--primes);*/ return len; } void main() { int data[5], *primes, primes_[5] = {1,2,3,4,5}, len = 0; primes = primes_; for (int i = 0; i < 5; i++) { scanf("%3d", &data[i]); } printf("共有%d个素数", len = IsPrime(data, primes, 0)); printf("这些素数分别为:\n"); for(int i=0;i<len;i++) printf("%3d\n", primes_[len]); }

求代码:求整数的位数及各位数字之和(用C语言)

对于给定的正整数N,求它的位数及其各位数字之和。 输入格式: 输入在一行中给出一个不超过10 ​9 ​​ 的正整数N。 输出格式: 在一行中输出N的位数及其各位数字之和,中间用一个空格隔开。 请问哪位大神能给出代码来。

实现关于数字的算法问题(c语言)

# c语言实现 输入若干个正整数, 从输入的若干个数字中选择一部分数字出来(可以全部选择), 将选择的数字分成n组,每组数字的个数可以不一样, 但要求每组数字的和相等并且尽可能最大! 如果可以实现则输出最大和,如果无法完成则输出0

编程程序求出m,n之间所有素数(包括m和n),其中n>m?

大佬们看一下我这个程序 运行时没有错误的但是好像限制条件有问题。不知道是哪里出的,我自己认为把非素数的条件考虑完全了但是测试数据还是不对。 问题描述 编程程序求出m,n之间所有素数(包括m和n),其中n>m。 输入形式 输入一行,包括整数m和n。 输出形式 输出一行,输出m与n间的所有素数,各数之间以空格分隔。若无素数,则输出no。 样例输入 1 10 样例输出 2 3 5 7 有一个测试数据是要输出no,但是我输出的是空值。 ``` #include<stdio.h> #include<math.h> int main() { int a,b,n,k,i; scanf("%d%d",&a,&b); if(a>=b||a<1) printf("no"); else { if(a==1) a=2; for(n=a;n<=b;n++) { k=sqrt(n); for(i=2;i<=k;i++) if(n%i==0)break; if(i>=k+1) { printf("%d ",n); } } } printf("\n"); return 0; } ```

C语言如何实现 输入一个正整数n 代表接下来要输入的n行正整数,每行的个数未知

C语言如何实现 输入一个正整数n 代表接下来要输入的n行正整数,每行的个数未知 如输入3 2 5 7 6 2 3

编程实现:键盘输入一个整数n,输出小于n的所有绝对素数。

绝对素数是指本身是素数,其逆序数也是素数的数。例如:10321与12301是绝对素数。 编程实现:键盘输入一个整数n,输出小于n的所有绝对素数。 要求:编写函数int isprime(int x)实现测试参数x是否为素数;编写函数int convert(int x),返回参数x的逆序数。main中完成输入输出与函数调用。

现在给你N个数(0<N<1000),现在要求你写出一个程序,找出这N个数中的所有素数,并求和

。 输入 第一行给出整数M(0<M<10)代表多少组测试数据 每组测试数据第一行给你N,代表该组测试数据的数量。 接下来的N个数为要测试的数据,每个数小于1000 输出 每组测试数据结果占一行,输出给出的测试数据的所有素数和

关于C语言的一道题目求编程 新人求解

从键盘输入一个整数,输出距离该数最近的素数。根据输入的数不同,此问题可能有一个答案(或者比输入的数大或者比输入的数小),也可能需要输出两个值(一个比输入的数大,一个比输入的数小,两个距离输入的数一样近)。PS:数学意义上的最小素数是2,例如,若输入-213,结果应是2 不要太高深 开头用#include int main for scanf printf 等等这几类基础的吧 其他复杂的就算了吧

C语言:输入n个数,找出其中最小的数,然后将与最前面的数交换后输出这些数

Problem Description 输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数。 Input 输入数据有多组,每组占一行,每行的开始是一个整数n,表示这个测试实例的数值的个数,跟着就是n个整数。n=0表示输入的结束,不做处理。 Output 对于每组输入数据,输出交换后的数列,每组输出占一行。 Sample Input 4 2 1 3 4 5 5 4 3 2 1 0 Sample Output 1 2 3 4 1 4 3 2 5

c语言的基础题,请帮忙

编写程序要求用户输入12小时制的时间,然后用24小时制显示该时间: Enter a 12-hou time:9:11PM Equivalent 24-hour time:21:11

分解素因数的问题,输出总是1,跪求各位大神

#include<stdio.h> bool mark[100001]; int prime[100001]; int primeSize; void init(){ primeSize=0; for(int i=2;i<=100000;i++) { if(mark[i]=true) { continue; } prime[primeSize++]=i; // if(i>=1000) continue; for(int j=i*i;j<=100000;j+=i) { mark[j]=true; } } } int main(){ init(); int n; while(scanf("%d",&n)!=EOF) { int ansPrime[30]; int ansNum[30]; int ansSize=0; for(int i=0;i<primeSize;i++) { if(n%prime[i]==0) { ansPrime[ansSize]=prime[i]; ansNum[ansSize]=0; while(n%prime[i]==0) { ansNum[ansSize]++; n/=prime[i]; } ansSize++; if(n==1) break; } } if(n!=1) { ansPrime[ansSize]=n; ansNum[ansSize++]=1; } int ans=0; for(int i=0;i<ansSize;i++) { ans+=ansNum[i]; } printf("%d\n",ans); } return 0; }

PAT考试1007. 素数对猜想 (20) VS上正常运行,但不能AC

![图片说明](https://img-ask.csdn.net/upload/201901/06/1546758204_326281.png) VS上可以运行并且得出正确结果的,但是不能AC,想请教各位大神,看看我代码哪里出了问题,非常非常非常感谢! 附上题目 让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数。显然有 d1=1 且对于n>1有 dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。 现给定任意正整数N (< 10^5),请计算不超过N的满足猜想的素数对的个数。 输入格式:每个测试输入包含1个测试用例,给出正整数N。 输出格式:每个测试用例的输出占一行,不超过N的满足猜想的素数对的个数。 输入样例: 20 输出样例: 4 ``` #include<iostream> using namespace std; int main() { cout << "please enter a number" << endl; int N; cin >> N; int i = 1; int count = 0; int j, n, m, d; int a[100000]; a[0] = 2; if (N >= 100000) { return -1; } else { for (n = 3; n <= N; n++) { bool ok=1; for (m = 2; m < n; m++) { if (n%m == 0) { ok = !ok; break; } } if (ok) { a[i] = n; cout << a[i] << endl; i++; } } for (j = 0; j < i - 1; j++) { d = a[j + 1] - a[j]; if (d == 2) count++; } cout << count << endl; return 0; } } ```

Palindromes

Problem Description Write a program to determine whether a word is a palindrome. A palindrome is a sequence of characters that is identical to the string when the characters are placed in reverse order. For example, the following strings are palindromes: “ABCCBA”, “A”, and “AMA”. The following strings are not palindromes: “HELLO”, “ABAB” and “PPA”. Input The input file will consist of up to 100 lines, where each line contains at least 1 and at most 52 characters. Your program should stop processing the input when the input string equals “STOP”. You may assume that input file consists of exclusively uppercase letters; no lowercase letters, punctuation marks, digits, or whitespace will be included within each word. Output A single line of output should be generated for each string. The line should include “#”, followed by the problem number, followed by a colon and a space, followed by the string “YES” or “NO”. Sample Input ABCCBA A HELLO ABAB AMA ABAB PPA STOP Sample Output #1: YES #2: YES #3: NO #4: NO #5: YES #6: NO #7: NO

程序员的兼职技能课

程序员的兼职技能课

为linux系统设计一个简单的二级文件系统

实验目的: 通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。 实验要求: 为linux系统设计一个简单的二级文件系统。要求做到以下几点: (1)可以实现下列几条命令(至少4条)

CCNA+HCNA+wireshark抓包综合网工技能提升套餐

本套餐包含思科路由交换CCNA,部分CCNP核心,华为HCNA以及wireshark抓包等类容,旨在培养具有综合能力的网络工程师。

董付国老师Python全栈学习优惠套餐

购买套餐的朋友可以关注微信公众号“Python小屋”,上传付款截图,然后领取董老师任意图书1本。

成年人用得到的6款资源网站!各个都是宝藏,绝对让你大饱眼福!

不管是学习还是工作,我们都需要一些资源帮助我们有效地解决实际问题。 很多人找资源只知道上百度,但是你们知道吗,有的资源是百度也搜索不出来的,那么今天小编就给大家介绍几款好用的资源网站,大家赶紧收入囊中吧! 1.网盘007 https://wangpan007.com/ 一款全能的资源搜索网站!只需要输入关键字,就能获得你想要的视频、音乐、压缩包等各种资源,网上...

矿车轴载荷计算方法的比较及选用

针对矿车轴的弯曲损坏,分析了固定式矿车车轴的受力,并对力叠加法以及当量负荷法2种计算方法进行了分析和比较,认为应采用当量负荷法进行车轴的设计计算。

Python数据清洗实战入门

Python数据清洗实战入门

C/C++跨平台研发从基础到高阶实战系列套餐

一 专题从基础的C语言核心到c++ 和stl完成基础强化; 二 再到数据结构,设计模式完成专业计算机技能强化; 三 通过跨平台网络编程,linux编程,qt界面编程,mfc编程,windows编程,c++与lua联合编程来完成应用强化 四 最后通过基于ffmpeg的音视频播放器,直播推流,屏幕录像,

Polar编码matlab程序

matlab实现的Polar codes源程序

2019全国大学生数学建模竞赛C题原版优秀论文

2019全国大学生数学建模竞赛C题原版优秀论文,PDF原版论文,不是图片合成的,是可编辑的文字版。共三篇。 C044.pdf C137.pdf C308.pdf

Linux常用命令大全(非常全!!!)

Linux常用命令大全(非常全!!!) 最近都在和Linux打交道,感觉还不错。我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因,比较短小但却功能强大。我将我了解到的命令列举一下,仅供大家参考: 系统信息 arch 显示机器的处理器架构 uname -m 显示机器的处理器架构 uname -r 显示正在使用的内核版本 d...

Linux下聊天室实现(基于C)

在linux下的基于TCP/IP,采用socket通信的聊天室,实现进入聊天室,进行多人群聊,指定人进行私聊,群主管理员功能,颗进行禁言,提出群聊等操作。个人账号可修改昵称或者修改密码,还可进行找回密

一个较完整的Qt用户登录界面设计

一个较完整的Qt用户登录界面,稍微移植可用,用sqlite数据库存储用户名和密码,具有增加和删除用户的功能,开发环境为ubuntu16.04+Qt5.6.1,win7下程序也编译可用。贡献出来,共同学

机器学习初学者必会的案例精讲

机器学习初学者必会的案例精讲

【C语言】贪吃蛇游戏代码(Visual C++6.0实现)

本游戏代码参考《C语言项目开发全程实录(第二版)》第六章。代码已在Visual C++6.0环境下编译测试通过,可在VC++6.0编译器中导入工程编译运行查看效果,或者也可以直接运行Release或D

Android小项目——新闻APP(源码)

Android小项目——新闻APP(源码),一个很简单的可以练手的Android Demo Ps:下载之前可以先看一下这篇文章——https://blog.csdn.net/qq_34149526/a

网络工程师小白入门--【思科CCNA、华为HCNA等网络工程师认证】

网络工程师小白入门--【思科CCNA、华为HCNA等网络工程师认证】

Android音视频开发全套

Android平台音视频开发全套,涉及:FFmpeg软解码解码、Mediacodec硬解码编码、Openssl音频播放、OpenGL ES视频渲染、RTMP推流等核心重要知识点。

YOLOv3目标检测实战:训练自己的数据集

YOLOv3目标检测实战:训练自己的数据集

2019 Python开发者日-培训

2019 Python开发者日-培训

2019 AI开发者大会

2019 AI开发者大会

Windows版YOLOv4目标检测实战:训练自己的数据集

Windows版YOLOv4目标检测实战:训练自己的数据集

4小时玩转微信小程序——基础入门与微信支付实战

4小时玩转微信小程序——基础入门与微信支付实战

因为看了这些书,我大二就拿了华为Offer

四年了,四年,你知道大学这四年我怎么过的么?

Python可以这样学(第四季:数据分析与科学计算可视化)

Python可以这样学(第四季:数据分析与科学计算可视化)

我说我不会算法,阿里把我挂了。

不说了,字节跳动也反手把我挂了。

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

YOLOv3目标检测实战系列课程

《YOLOv3目标检测实战系列课程》旨在帮助大家掌握YOLOv3目标检测的训练、原理、源码与网络模型改进方法。 本课程的YOLOv3使用原作darknet(c语言编写),在Ubuntu系统上做项目演示。 本系列课程包括三门课: (1)《YOLOv3目标检测实战:训练自己的数据集》 包括:安装darknet、给自己的数据集打标签、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类。 (2)《YOLOv3目标检测:原理与源码解析》讲解YOLOv1、YOLOv2、YOLOv3的原理、程序流程并解析各层的源码。 (3)《YOLOv3目标检测:网络模型改进方法》讲解YOLOv3的改进方法,包括改进1:不显示指定类别目标的方法 (增加功能) ;改进2:合并BN层到卷积层 (加快推理速度) ; 改进3:使用GIoU指标和损失函数 (提高检测精度) ;改进4:tiny YOLOv3 (简化网络模型)并介绍 AlexeyAB/darknet项目。

DirectX修复工具V4.0增强版

DirectX修复工具(DirectX Repair)是一款系统级工具软件,简便易用。本程序为绿色版,无需安装,可直接运行。 本程序的主要功能是检测当前系统的DirectX状态,如果发现异常则进行修复

C++语言基础视频教程

C++语言基础视频教程

形考任务一答案.zip

国开电大VisualBasic程序设计形考任务答案 请同学选择课程实验栏目“实验1 欢迎程序”或“实验2 计时秒表程序”的其中之一,在VB集成开发环境中认真完成实验。

相关热词 c# 解析cad c#数字格式化万 c#int转byte c#格式化日期 c# wpf 表格 c# 实现ad域验证登录 c#心跳包机制 c#使用fmod.dll c#dll vb 调用 c# outlook
立即提问
相关内容推荐