一、将30597分解为素数(质数)的乘积
#include <iostream>
#include <cmath>
using namespace std;
//函数isPrimeNum判断num是否是素数,是则返回true,否则返回false
bool isPrimeNum(int num)
{
//判断1、2是否为素数
if (num <= 2)
{
return num == 2; //1返回false,2返回true
}
if (num % 2 == 0) //若num为偶数,则返回false
{
return false;
}
int iSqrt = sqrt(num);
for (int i = 3; i <= iSqrt; i+=2) //判断奇数num是否能整除3,5,7...
{
if (num % i == 0) //若能整除,则返回false
{
return false;
}
}
return true;
}
//函数fun将n分解为素数的乘积
void fun(int n)
{
if(!isPrimeNum(n)) //如果n不是素数,则n一定是合数,则可以分解
{
for(int i=1;i<=n/2;i++) //分解因子不可能大于n的一半
{
if(isPrimeNum(i)&&(n%i==0)) //如果i是素数且可被n整除,则n=i*num
{
int num=n/i;
fun(num); //继续将num进行分解,这是递归的思想
cout<<i<<endl;
break;
}
}
}
else
cout<<n<<endl;
}
int main(int argc, char* argv[])
{
fun(30597);
getchar(); //防止黑屏一闪而过
return 0;
}
二、将字符串“evcfg”中每个字符的ASCII码值乘以2,再加10,然后除以3,得到新的字符的ASCII码值,输入新的字符串
#include <iostream>
using namespace std;
void main()
{
int i;
int num;
char str[6]="evcfg";
char str1[6];
for(i=0;i<5;i++)
{
num=str[i]; //获取各个字符的ASCII码值
str1[i]=(num*2+10)/3; //将码值根据要求进行计算,得到新的码值
}
str1[5]='\0'; //字符串以0结尾
cout<<str1<<endl;
getchar();
}
三、求1~3000以内,即包含1又包含7的数的和
#include <iostream>
#include <cstring>
using namespace std;
int main(int argc, char* argv[])
{
int sum=0;
for(int i=1;i<=3000;i++) //遍历1~3000
{
char str[5];
string cstr;
itoa(i,str,10); //将整数i转换为字符
cstr=str; //将字符转换为字符串
int pos=cstr.find("1"); //若cstr含有字符1,则返回非负数
int pos1=cstr.find("7"); //若cstr含有字符7,则返回非负数
if((pos>-1) && (pos1>-1)) //既有1又有7
{
sum=sum+i;
}
}
cout<<sum<<endl;
getchar();
return 0;
}
四、字符串的复制(两种方法)#include <iostream>
using namespace std;
void StringCopy(char *strDestination,const char *strSource)
{
while (*strSource!=0)
{
*strDestination=*strSource;
strSource++;
strDestination++;
}
*strDestination=0;
}
int main()
{
char a[6]="hello";
char b[6];
StringCopy(b,a);
cout<<b<<endl;
cin.get();
return 0;
}
#include <iostream>
using namespace std;
void StringCopy(char *strDestination,const char *strSource)
{
int i=0;
while (*strSource!=0)
{
strDestination[i]=*strSource;
strSource++;
i++;
}
strDestination[i]=0;
}
int main()
{
char a[6]="hello";
char b[6];
StringCopy(b,a);
cout<<b<<endl;
cin.get();
return 0;
}