问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用C语言求1-100的素数,麻烦会的帮我分析一下

发布网友 发布时间:2022-05-26 15:47

我来回答

4个回答

热心网友 时间:2023-10-25 11:21

//方法一:循环判断,能否被大于2的数整除即可。(快10年没有写C了,我手头没有编译器,你自己debug一下)
include <stdio.h>
main() {
int i=0, j=0, c=100,isPrimeNo=0;
for (i = 3; i < c; i++) {
isPrimeNo=1;
for (j = 2; j < i; j++) {
if (i % j == 0) {
isPrimeNo=0;
break;
}
}
if(isPrimeNo == 1)
printf(" %d |", i);
}
}

===========================================================
===========================================================
===========================================================
方法二,定义一个数组,依次按顺序填写自然数,然后把合数依次去掉即可。
我这里用java测试了一下:求1000万以内的素数,也才5~6S,就出来了。

public class PrimeNumber {
static int count = 1000000;
static int all[] = new int[count + 1];
public static void main(String[] args) {
PrimeNumber rn = new PrimeNumber();
rn.initCount();
rn.specialRemove();
for (int i = 2; i < count; i++)
rn.remove(i);
rn.printcount(true);
}

/**
* 打印结果:
* @param simpleMode :打印方式,true:仅仅打印素数.false:按照自然数顺序打印.合数的位置为0.
*/
private void printcount(boolean simpleMode) {
int c = 0;
for (int i = 1; i < count + 1; i++) {
if (simpleMode && (all[i] != 0)) {
System.out.print(all[i] + "\t");
c++;
if (c % 10 == 0)
System.out.print("\n");
} else if (!simpleMode) {
System.out.print(all[i] + "\t");
c++;
if (c % 10 == 0)
System.out.print("\n");
}
}
}

//初始化
private void initCount() {
all[0] = 0;
for (int i = 0; i < count + 1; i++) {
all[i] = i;
}
}

//Remove special values:0,1
private void specialRemove() {
all[0] = 0;
all[1] = 0;
}

//移掉c的倍数
private void remove(int c) {
for (int i = 2; i < count; i++) {
if (i * c > count)
break;
all[i * c] = 0;
}
}
}

热心网友 时间:2023-10-25 11:21

#include<stdio.h>
void main()
{
int a,b,k;
for(a=2;a<=100;a++)
{
for(b=2;b<a;b++)
{
k=0;
if(a%b==0)
{
k++;
break;
}
}
if(k==0)
printf(" %d ",a);
}
}

热心网友 时间:2023-10-25 11:21

先写一个子函数,用来判断一个数是否素数,再从1判断100
bool fun(int n)
{
int i;

if n== 1 || n == 2
return true

for i=2; i<n; i++
if n%i == 0
break;
if i == n
return true;
else
return false
}
再从1判断到100
main()
int i;
for i=1; i<=100; i++
if fun(i) printf(%d, i);

热心网友 时间:2023-10-25 11:22

#include<stdio.h>

bool prime(int n)
{
int i;
if(n==1)return 0;
for(i=2;i*i<=n;i++)
{
if(n%i==0)return 0;
}
return 1;
}

void main()
{
int i,n,a,b;
scanf("%d",&n);
while(n--)
{
scanf("%d%d",&a,&b);
for(i=a;i<=b;i++)
{
if(prime(i))printf("%d ",i);
}
printf("\n");
}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 求用C语言写的1-100素数的程序 求1-100内所有素数C语言程序 城市轨道是在地铁上班吗? 轻轨是地铁吗 地铁是城市轨道交通吗? 浙江省可以旅游的地方,别整那些旅游胜地,假不假 浙江这处旅游景点,外地游客纷纷慕名而来,当地游客却不爱去? 自助游!!!关于去浙江旅游的问题,去过浙江的请进!!! 浙江旅游 充电宝 充电需要多长时间 浙江旅游高手请进 高悬赏! 浙江省农业厅举报电话 浙江省卫生局投诉电话? 投诉浙江长兴水口乡顾渚恒聚农家乐乱收费。 简直是敲诈游客,不知如何投诉?向谁投诉? 浙江信我游囯际旅行社有限公司投诉电话是多少? 旅游被骗了怎么办?? 浙江省旅游投诉电话 GTX“1050ti”和“1060”差别大吗? 四川教师资格证笔试成绩有效期是多久 韩国人可以用微信吗 求解释C语言1~100素数程序 仿身棒球棍买多少英寸的合适 身高181体重83公斤,想买个车载棒球棍防身,多长的合适 M开头的女生英文名? 推介M开头好听的女英文名 好听的女生英文名最好是S开头或者M开头的,音节2个的 起个好听的女英文名,最好是E或M开头的 给朋友圈发个感谢句子 梦见两扇门开什么意思 梦见有两扇门挡着过不去 梦见两扇门,门上有龙和凤? 梦见两扇大门一扇安好一扇没安? 梦见两扇红门紧闭 第二产程的介绍 我梦见一个房间有两扇门是什么意思啊? 第二产程的临床表现 苹果手机更新系统后出现“iphone确认密码再使用iclond”是怎么了? 第二次工业革命的主要标志是什么? 我头上长了蛇盘疮。头很疼。问是 中医治疗好,还是西医好 第二次工业革命的主要标志是什么啊 ?