先解释一下筛选法的步骤:
<2>用2去除它后面的各个数,把能被2整除的数挖掉,即把2的倍数挖掉。
<3>用3去除它后面的各数,把3的倍数挖掉。
<4>分别用5…各数作为除数去除这些数以后的各数。
上述 *** 作需要一个很大的容器去装载所有数的集合,只要满足上述条件,即2的倍数大于1的全部置0,3的倍数大于1的全部置0,丛或旅4的倍数大于1的全部置0.。。渗凳。一团携直到这个数据集合的末尾,这样一来不为0的数就是素数了,然后按下标在里面进行查找就好了
用筛法求100以内的素数辩兆:
#include<stdio.h>
int main()
{
int a[101],i,j
for(i=2i<=100i++)
a[i]=1
for(i=2i<=10i++)
for(j=i+ij<=100j+=i)
a[j]=0
printf("100以携铅租内的素数:\n")
for(i=2i<=100i++)
if(a[i])printf("激让%d ",i)
printf("\n")
getch()
return 0
}
主要是CalcWord和WriteWord 函数,仔细研究吧,别浪费我的心血:#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
struct WORD_FOUND
{
char szWord[256]
int nCount
}
WORD_FOUND g_WordFound[1000]={{"",0}}
int g_nMatch=0
int CalcWord(char *szFile)
{
char szText[1024]
char szWord[512]
FILE * fp
int i
if ((fp=fopen(szFile,"或猛r"))==NULL)
{
printf("森团肆file not found")
return -1
}
while(fgets(szText,sizeof(szText)-1,fp))
{
char *tmp=szText,*end=szText+strlen(szText)
char *endChr
while (tmp<end)
{
while ((*tmp==' '||*tmp=='\n'||*tmp=='\t'||!isalpha(*tmp))&&*tmp) tmp++
endChr=tmp
while (*endChr&&*endChr!='\n'&&*endChr!='\r'&&*endChr!=' ')
{
if (!isalpha(abs(*endChr)))
break
endChr++
}
memset(szWord,0,sizeof(szWord))
strncpy(szWord,tmp,endChr-tmp)
bool bFound=false
for (i=0i<g_nMatchi++)
{
if (strcmp(g_WordFound[i].szWord,szWord)==0)
{
g_WordFound[i].nCount++
bFound=true
break
}
}
if (!bFound&&strlen(szWord)>0)
{
strcpy(g_WordFound[g_nMatch].szWord,szWord)
g_WordFound[g_nMatch].nCount++
g_nMatch++
}
tmp=endChr
if (tmp>=end) break
}
}
return 0
}
int WriteWord(char *szFile,int nAppearance)
{
int i
FILE *file=fopen(szFile,"w")
if (!file) return -1
for (i=0i<g_nMatchi++)
{
if (g_WordFound[i].nCount>=nAppearance)
{
fwrite(g_WordFound[i].szWord,1,strlen(g_WordFound[i].szWord),file)
fwrite("\n",1,1,file)
printf("%s = %d\n",g_WordFound[i].szWord,g_WordFound[i].nCount)
}
}
if (file) fclose(file)
return 0
}
int main()
{
int i
if (CalcWord("in.txt")!=0)
{
printf("此轿Calculate word failed\n")
return 0
}
WriteWord("out.txt",10)
for (i=0i<g_nMatchi++)
{
printf("%s = %d\n",g_WordFound[i].szWord,g_WordFound[i].nCount)
}
getch()
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)