当前位置:首页 » 编程语言 » 1到50所有的素数c语言
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

1到50所有的素数c语言

发布时间: 2023-05-12 19:11:01

c语言 求50内的素数

if(i>n)
是针对for(i=2;i<=n;i++)
i<=n条件结束判断的
如果m不是素数,那么将执行
if(m%i==0)
break;
这样,i还没到n就结束循环了。
如果m是素数,i一直到n+1才跳出循环,所以只有i>n情况下,才能正确判断是否为素数

② C语言 输出1到100之间的全部素数

有三种方法:

1、输出1-100以内的素数:

(2)1到50所有的素数c语言扩展阅读:

在这个小程序中主要用到的是for循环

for 循环语句的一般形式为:

for (表达式1; 表达式2; 表达式3)

{

语句;

}

需要注意的两点:

1) 表达式1、表达式2和表达式3之间是用分号;隔开的,千万不要写成逗号。

2)for(表达式1;表达式2;表达式3)的后面千万不要加分号,很多新手都会犯这种错误——会情不自禁地在后面加分号。

因为 for 循环只能控制到其后的一条语句,而在C语言中分号也是一个语句——空语句。所以如果在后面加个分号,那么 for 循环就只能控制到这个分号,下面大括号里面的语句就不属于 for 循环了。

③ 编程 求50以内的素数

可根据初等雀慧数论的思路,一个嫌侍整数,若不顷者答能整除它的平方根之内的整数,则为素数,如下
#include<stdio.h>
#include<math.h>
main(){
int n,j,sum=0;
for(n=2;n<=50;n+=2){
for(j=2;j<=sqrt(n)-1;j++){
if((n%j)==0) break;
}
if(j>sqrt(n)-1){
printf("%d, ",n);
sum=sum+1;
}

}
printf("\nsum=%d\n",sum);
}

④ 编C语言程序求自然数1~100的全部素数。

#include"stdio.h"
const
int
n=100;
int
fun(int
n)
{
int
i;
for
(i=2;i
if
(n%i==0)
return
0;
return
1;
}
void
main()
{
int
i;
for(i=1;i
{
if(fun(i*(i+1)-1))
printf("%d\t"孝配,i);
}
}
这里n设为100就是求100以内巧让指的这种自然数,你看看是否可滑拆以。

⑤ 用c语言编写程序输出1-100内的素数

用常规的判素性方法可如下实现
#include "stdio.h"
#include "math.h"
bool IsPrime(int x)
{
int i, s;
s = sqrt(x + 1);
for(i = 2; i <= s; i++)
if(x % i == 0) return false;
return true;
}
void main( )
{
int i;
for(i = 2; i < 100; i++)
if(IsPrime(i))
printf("%d ", i);
}
也可采用筛选法,筛选法效率会高一些,楼上的虽然也是筛选法,但他的效率却并不高。筛选法的思路是将那些非素数筛掉,留下那些素数。命题“对于1<x<100的合数x, 必含有小于10的质因子”可以证明是真命题,它的逆反命题“对于1<x<100的数,如果不含有小于10的质因子,则它必为素数。”则也是真命题。因此筛除时,只要筛除含有10以内的质因子的数就可以了。下面给出筛选法的代码。
#include "stdio.h"
void main( )
{
bool isprime[100];
int i, j;
isprime[0] = false;
isprime[1] = false;
for(i = 2; i < 100; i++) /*先初始化2~100的都是素数,然后将非素数筛除掉*/
isprime[i] = true;
for(i = 2; i < 10; i++) /*将所有含有小于10的质因子的数筛除掉*/
{
if(isprime[i]) /*如果i是素数,则将它的倍数全部筛掉*/
for(j = i * i; j < 100; j += i) /*从i*i开始检测是因为小于i*i的合数都被小于i的素数筛除了*/
isprime[j] = false;
}
for(i = 2; i < 100; i++)
if(isprime[i])
printf("%d ", i);
}

⑥ 用C语言输出1到50之间的素数之和

代码如散漏物下(如果正确,请采纳):

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

/*判断一个整数数搜冲否为素数*/
bool IsPrime(int iNum)
{
int j,k;
if(iNum < 2)
{
return false;
}

k = sqrt((double)iNum);
for(j=2;j<=k;j++)
{
if(iNum%j==0)
{
return false;
}
}

return true;
}

void main()
{
int sum = 0;
int i = 0;
for (; i < 50; i++)
{
if (IsPrime(i))
{
sum += i;
}
}

printf("0~50间的所有素冲液数之和为: %d\n", sum);

getchar();
}

⑦ C语言求1到100的素数

除了2,所有素数都是奇数,所以只考查>2的奇数;奇数肯定不能被偶数尽除,所以哗罩除数也只用奇数,且用j*j<=i这种形式控制循环,避免开方计算。
//#include"stdafx.h"//Ifthevc++6.0,with信芦氏thisline.
#include"stdio.h"
intmain(void){
inti,j,k;
printf(": 2");
for(i=3;i<100;i+=2){//除了2只考查奇数,避免穷举
for(j=3;(k=j*j)<=i;j+=2)//只用奇数去除,且j*j<滑散=i限制循环以提高时效
if(i%j==0)break;
if(k>i)
printf("%d",i);
}
printf(" ");
return0;
}

⑧ 用c语言:输出在1~100内的所有素数

#include<stdio.h>

#include<math.h>

intmain()

{

intn;

inti;

intflag=0;

for(n=2;n<=100;n++)

{

flag=0;

for(i=2;i<=sqrt(n);i++)

{

if(n%i==0)

{

flag=1;

break;

}

}

if(flag==0)

printf("%d",n);

}

return0;

}

(8)1到50所有的素数c语言扩展阅读

C语言判断素数

#include<stdio.h>

intmain()

{

inti,j;

intm,n,p;

for(i=11;i<1000;i++)

{

if(i>=11&&i<=99)

{

m=i%10;

n=i/10;

}

else

{

m=i/100;

n=i%10;

}

if(m==n)

{

for(j=2;j<i/2;j++)

if(i%j==0)

break;

if(j>=i/2)

{

printf("%d",i);

}

}

}

return0;

}

⑨ c语言输入1到50并求出素数个数

#include<stdio.h>
#include<stdlib.h>
int main()
{
int i1,i2;
for(i1=1;i1<=50;i1++)
{
正首for(i2=2;i2<i1;i2++)
举冲数if(i1%i2==0)
break;
判衡if(i1==i2)
printf("%d ",i1);
}
system("pause");
return 0;
}

⑩ c语言 求50以内的所有素数

#include<stdio.h>
#include<math.h>
main()
{
int i,n;
for(i=2;i<=50;i++)
{
for(n=2;n<衫坦没=(int)sqrt(i);n++) //for(n=2;n<=i;n++) i<=n条件结束判断
if(i%n==0) break;
f(n==(int)sqrt(i)+1) //其实这个条件判断是和上面的for并列的
printf("%d",i);
}
}区别一下两次循环。
你会发现你的做法明显效率更高。
给你举个例子来说明一下吧。
比如说16,我给你举的做法就得从2做到16,就是比较传统的做法。
但是你的只要从2做到4,明显高效了,为什么呢?
和2对应的是8
和3对应的是5多一点
和4对应的是4

和5对应的是3多一点
和6对应的是3不到一点
……
你有没有发现到后来做的其实已经和前面的重复了呢?
而这个重复的界限的就是开方后的4对吧

第二个问题
还是上面的例子吧
这里的这个条件其实是到最后的break或者说是到最后了没做成才做到这个条件的,只有加了1才会到后面一个数上去啊。
因为这个循环里做到了最后,所以要进入下一个数。
(这个或纳是思路,一下子没明白也正常的)我当时也想了信旁很久的