pat数素数 20 c语言,PAT乙级C语言1013 数素数
1013 數(shù)素?cái)?shù) (20 分)
令 P?i表示第 i 個(gè)素?cái)?shù)。現(xiàn)任給兩個(gè)正整數(shù) M≤N≤10的4次方,請(qǐng)輸出 PM到 PN的所有素?cái)?shù)。
輸入格式:
輸入在一行中給出 M 和 N,其間以空格分隔。
輸出格式:
輸出從 PM到 PN的所有素?cái)?shù),每 10 個(gè)數(shù)字占 1 行,其間以空格分隔,但行末不得有多余空格。
輸入樣例:
5 27
輸出樣例:
11 13 17 19 23 29 31 37 41 43
47 53 59 61 67 71 73 79 83 89
97 101 103
#include
#include
int main()
{
int min,max;//輸入的最小最大值
int k,b,j;
int a[10000];//最開始定義的時(shí)候數(shù)組大小只設(shè)為1000,有個(gè)測試點(diǎn)過不去
//設(shè)這個(gè)數(shù)組是為了存放素?cái)?shù)
a[0] = 2;//數(shù)組中第一個(gè)存放的素?cái)?shù)是2
scanf("%d %d",&min,&max);
b = 1;
for(int i = 3 ;i <= 1000000 ;i++) //之前設(shè)置i的取值過小,測試點(diǎn)沒過去
{
if( i % 2 == 0)
continue;
else
{
k=(int)sqrt( (double)i );
for(j = 2;j <= k;j++)
if( i % j ==0)
break;
if(j > k)
{
a[b++] = i;
}
if(b > max)
break;
}
}
int n = 1;
for(int i = min - 1;i
{
if(n % 10 == 1)
printf("%d",a[i]);
else
printf(" %d",a[i]);
if(n % 10 ==0)
printf("\n");
}
return 0;
}
C語言判斷素?cái)?shù)(from C語言中文網(wǎng))
1):因此判斷一個(gè)整數(shù)m是否是素?cái)?shù),只需把 m 被 2 ~ m-1 之間的每一個(gè)整數(shù)去除,如果都不能被整除,那么 m 就是一個(gè)素?cái)?shù)。
2):另外判斷方法還可以簡化。m 不必被 2 ~ m-1 之間的每一個(gè)整數(shù)去除,只需被 2 ~ 之間的每一個(gè)整數(shù)去除就可以了。如果 m 不能被 2 ~ 間任一整數(shù)整除,m 必定是素?cái)?shù)。例如判別 17 是是否為素?cái)?shù),只需使 17 被 2~4 之間的每一個(gè)整數(shù)去除,由于都不能整除,可以判定 17 是素?cái)?shù)。
1所對(duì)應(yīng)的代碼
#include
int main(){
int a=0; // 素?cái)?shù)的個(gè)數(shù)
int num=0; // 輸入的整數(shù)
printf("輸入一個(gè)整數(shù):");
scanf("%d",&num);
for(int i=2;i
if(num%i==0){
a++; // 素?cái)?shù)個(gè)數(shù)加1
}
}
if(a==0){
printf("%d是素?cái)?shù)。\n", num);
}else{
printf("%d不是素?cái)?shù)。\n", num);
}
return 0;
}
2所對(duì)應(yīng)的代碼
#include
#include
void main(){
int m; // 輸入的整數(shù)
int i; // 循環(huán)次數(shù)
int k; // m 的平方根
printf("輸入一個(gè)整數(shù):");
scanf("%d",&m);
// 求平方根,注意sqrt()的參數(shù)為 double 類型,這里要強(qiáng)制轉(zhuǎn)換m的類型
k=(int)sqrt( (double)m );
for(i=2;i<=k;i++)
if(m%i==0)
break;
// 如果完成所有循環(huán),那么m為素?cái)?shù)
// 注意最后一次循環(huán),會(huì)執(zhí)行i++,此時(shí) i=k+1,所以有i>k
if(i>k)
printf("%d是素?cái)?shù)。\n",m);
else
printf("%d不是素?cái)?shù)。\n",m);
}
C語言中每輸出幾個(gè)換行(from 百度知道)
#include
#include
int main()
{
int n,i=1; // i 從 1 開始,i=0 的時(shí)候,第一次就滿足換行了//i為計(jì)數(shù)的
for(n=100;n<=200;n++,i++)
{
if(n%3!=0)continue;
printf("%4d",n);
if(i%5==0) // 取 5 的余數(shù)
printf("\n");
}
return 0;
}
總結(jié)
以上是生活随笔為你收集整理的pat数素数 20 c语言,PAT乙级C语言1013 数素数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言程序开发中连接是,C语言中等待so
- 下一篇: 多项式加法c语言数组解,急!!!!c语言