mooc题 素数的判断,素数求和,字符串数组

1.输出100以内的素数,注意1不是素数

#include <iostream>
#include <stdio.h>
 
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char** argv) {
	for(int x=2;x<100;x++)
	{
		int isPrime=1;
		for(int i=2;i<x;i++)
		{
			if(x%i==0) 
			{
				isPrime=0;
			    break;
			}	
		}
		if(isPrime) printf("%d ",x);
	}
	return 0;
}

2.

题目内容:

我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。

现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。


输入格式:

两个整数,第一个表示n,第二个表示m。


输出格式:

一个整数,表示第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。


输入样例:

2 4


输出样例:

15

#include <iostream>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char** argv) {
	int n,m,i=0;
	int isPrime=1;
	int pri[200]; 
	int result=0;
	scanf("%d %d",&n,&m);      //第n个素数到第m个素数 

	for(int x=2;x<200;x++)
	{
		int isPrime=1;
		for(int j=2;j<x;j++)
		{
			if(x%j==0) 
			{
			    isPrime=0;
			    break;
			}	
		}
		if(isPrime) 
		{
		    pri[i]=x;
		    i++;      //注意此处i++应当在有素数加入时才作用
		}
	}
	for(int x=n;x<=m;x++)
	{
		 result+=pri[x-1];		
	} 
	printf("%d",result); 
	return 0;
}

3.念整数

题目内容:

你的程序要读入一个整数,范围是[-100000,100000]。然后,用汉语拼音将这个整数的每一位输出出来。

如输入1234,则输出:

yi er san si

注意,每个字的拼音之间有一个空格,但是最后的字后面没有空格。当遇到负数时,在输出的开头加上“fu”,如-2341输出为:

fu er san si yi


输入格式:

一个整数,范围是[-100000,100000]。


输出格式:

表示这个整数的每一位数字的汉语拼音,每一位数字的拼音之间以空格分隔,末尾没有空格。


输入样例:

-30


输出样例:

fu san ling


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

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char** argv) {

	char str[][5]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
	
	int num,j=0,i=0;
	int tmp[10];         //存储数字的每一位 
	scanf("%d",&num);
	
	if(num<0)
	{
		printf("fu ");
		num=abs(num);       //取绝对值
	}
	
	for(num;num>0;num/=10)
	{
	    tmp[i]=num%10;
	    i++;
	}
	for(i;i>0;i--)
	{
		j=tmp[i-1];
		printf("%s ",str[j]);
	}
	return 0;
}

4.优化的素数判断算法

  • 除去比2大的偶数,在判断是否为素数时,循环到该数的平方根即可
  • 若一个数可以被比他小的素数整除,则不是素数
int isPrime(int num, int prime[],int numberOfprime)
{
	for(int i=0;i<numerOfprime;i++)
	{
		if(num%prime[i]==0) return 0;      //可以被比他小的素数整除
	}
	return 1;
 } 
 
 void addPrime(int number)             //number为素数表的大小
 {
 	int cnt=1;
 	int i=3;
 	int prime[]={2};               //第一个素数为2
 	while(cnt<number)
 	{
 		if(isPrime(i,prime,cnt))
 		prime[cnt++]=i;
 		i++;
	}
 }
  • 建立素数表的第二种方法:如列出1~100内的素数,建立一个isPrime[ ],若某数i为素数,则isPrime[i]=1,且i的倍数不为素数,即isPrime[i*j]=0  [ for(int j=2;i*j<number;j++) ]
int main(int argc,char** argv)
{
      number=100;  
int isPrime[number];for(int i=0;i<number;i++) isPrime[i]=1;for(int x=2;x<number;x++){if(isPrime[x]){for(int i=2;i*x<number;i++) isPrime[1*x]=0;} }return 0; }

猜你喜欢

转载自blog.csdn.net/scarletteshu/article/details/79510287
今日推荐