项目1:素数和回文
/*项目1:素数和回文
编制2个返回值为int型的函数,用于判断参数是否为素数和回文,调用函数回答以下问题(请包括在一个main()函数中完成,
输出时,用明显的提示语,说明正在完成哪个任务。)
*/
#include<iostream>
using namespace std;
int isPrimer(int n)//判断是否为素数
{
int k;
for(k=2;k<n;k++)
{
if(n%k==0)
break;
}
if(k==n)
return 1;
else
return 0;
}
int isPalindrome(int n)//判断是否为回文
{
int a,b,c,d;
b=n%10;
a=n/10%10;
c=n/100;
if(n<10) d=n;
else if(n<100) d=b*10+a;
else d=b*100+a*10+c;
if(d==n)
return 1;
else
return 0;
}
int fan(int n)
{
int a,b,c,d;
b=n%10;
a=n/10%10;
c=n/100;
if(n<10) d=n;
else if(n<100) d=b*10+a;
else d=b*100+a*10+c;
return d;
}
int main()
{
int k,l,i=0,j=0,p=0,r=0;
int a[300]={0},b[300]={0},c[300]={0},d[300]={0};
for(k=2;k<=300;k++)
{
if(isPrimer(k)==1)
a[i++]=k;
if(isPalindrome(k)==1)
b[j++]=k;
c[p++]=k;
if((isPrimer(fan(k))==1)&&(isPrimer(k)==1))
d[r++]=k;
}
cout<<"300以内的所有素数为:"<<endl;
for(l=0;l<i;l++)
cout<<a[l]<<" "<<"\t";
cout<<endl;
cout<<"300以内的所有回文数为:"<<endl;
for(l=0;l<j;l++)
cout<<b[l]<<" "<<"\t";
cout<<endl;
cout<<"300以内的所有回文素数为:"<<endl;
for(l=0;l<p;l++)
cout<<c[l]<<" "<<"\t";
cout<<endl;
cout<<"300以内的所有可逆素数为:"<<endl;
for(l=0;l<r;l++)
cout<<d[l]<<" "<<"\t";
cout<<endl;
return 0;
}
/*项目4:数组素数排序
定义一个有10个的数组a,将数组a中的所有素数放在数组b,再对数组b排序。*/
#include <iostream>
using namespace std;
void sort(int p[], int n); //数组排序
bool prime(int x); //素数判断
void print(int p[],int n);//输出数组
int main( )
{ int a[10]={2,13,5,47,19,53,27,23,28,11};
int b[10],i,j=0;
for(i=0;i<10;i++)
{
prime(a[i]);
if(prime(a[i])==true)
{
b[j]=a[i];
j++;
} //将a中的素数存入b数组
}
print(b,j); //输出排序前的b数组
sort(b,j); //对数组b排序
print(b,j); //输出排序后的b数组
return 0;
}
//下面定义自定义函数
void sort(int p[], int n)
{
int i,j,t;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
{
if(p[j]>p[j+1])
{
t=p[j];
p[j]=p[j+1];
p[j+1]=t;
}
}
}
bool prime(int x)
{
int i;
if(x<2)
return false;
for(i=2;i*i<=x;i++)
{
if(x%i==0)
return false;
}
return true;
}
void print(int p[],int n)
{
int i;
for(i=0;i<n;i++)
cout<<p[i]<<" ";
cout<<endl;
}