當前位置:首頁 » 編程語言 » 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才會到後面一個數上去啊。
因為這個循環里做到了最後,所以要進入下一個數。
(這個或納是思路,一下子沒明白也正常的)我當時也想了信旁很久的