11.8~11.14每週題目

題目 1054: [二級C語言]計算素數和

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

int isprime(int x)//判斷素數,返回1表示x爲素數
{
	if(x==1)return 1;
	int i,emp=sqrt(x);
	for(i=2;i<=emp;++i)
		if(x%i==0)
			return 0;
	return 1;
}

int main(void)
{
	int m,n;
	long long sum=0;
	scanf("%d %d",&m,&n);
	for(;m<=n;++m)
		if(isprime(m))
			sum+=m;
	printf("%lld",sum);
	return 0;
}

洛谷P1177 【模板】快速排序

#include <stdio.h>
#define maxn 10000001

int num[maxn];
void swap(int *a,int *b)
{
	int c;
	c=*a,*a=*b,*b=c;
	return ;
}
void mergesort(int l, int r)
{
	int i=l,j=r,mid=num[l+(r-l)/2];
	do
	{
		while(num[i]<mid)++i;
		while(num[j]>mid)--j;
		if(i<=j)
		{
			swap(num+i,num+j);
			++i,--j;
		}
	}while(i<=j);
	if(l<j)mergesort(l,j);
	if(i<r)mergesort(i,r);
}

int main(void)
{
	int n,i;
	scanf("%d",&n);
	for(i=1;i<=n;++i)
		scanf("%d",&num[i]);
	mergesort(1,n);
	for(i=1;i<=n;++i)
		printf("%d ",num[i]);
	return 0;
}

題目 1046: [編程入門]自定義函數之數字後移

#include <stdio.h>

int num[101];
int main(void)
{
	int n,i,m;
	scanf("%d",&n);
	for(i=1;i<=n;++i)
		scanf("%d",&num[i]);
	scanf("%d",&m);

	for(i=n;i>0;--i)//倒着來防止覆蓋
		num[m+i]=num[i];
	for(i=1;i<=m;++i)//把後移後超出n的轉移到前面
		num[i]=num[n+i];
	for(i=1;i<=n;++i)
		printf("%d ",num[i]);
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章